空间域处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

空间域图像处理主要分为灰度变换和空间滤波两类。灰度变换在像素上操作,主要以改变对比度和阈值处理为目的。空间滤波涉及改善性能的操作,如对每一个像素的领域处理来平滑或锐化图像。

本章的基本处理模型个g(x,y)=T[f(x,y)],f是输入图像,g是处理后的图像,T是点(x,y)的邻域上定义的关于f的一种算子。

灰度变换

1、图像反转

2、对数变换

3、幂律(伽马)变换

4、分段线性变换函数

Imadjust灰度图像进行亮度变换的基本IPT工具,语法g=imadjust(f,[low_in high_in],[low_out high_out],gamma)

参数说明:

输入图像应为uint8,uint16,double类图像,输出图像与输入图像有相同的类。除图像f外,函数的所有输入输出均指定在0和1之间,而不论图像f的类。

[low_in high_in]或[low_out high_out]使用空矩阵([])会得到默认值[01].

具体应用见IP48的例子

Intrans是负片,对数,伽马,对比度拉伸的集成函数。

5、直方图均衡(重点)库函数程序IP59.m

空间滤波

(一)平滑空间滤波器

平滑滤波器用于模糊处理和降低噪声,因此常用于预处理的任务中,常称为均值滤波器。

1、平滑线性滤波器

2、统计排序(非线性)滤波器

库函数ordfilt2(f,order,domain)

(i)最小值

(ii)最大值

(iii)中值

3、图像处理工具箱的介绍

Fspecial用来生成滤波掩模的W的函数见程序test_fspecial.m

clear all;

close all;

clc;

w_average=fspecial('average',[33]);%矩形平均滤波器w_disk=fspecial('disk',4);%圆形平均滤波器w_gaussian=fspecial('gaussian',[33],0.5);%高斯滤波器

%8-23行代码是库函数fspecial中生成高斯滤波掩模的具体代码

p2=[33];

p3=0.5;

siz=(p2-1)/2;

std=p3;%标准差

[x,y]=meshgrid(-siz(2):siz(2),-siz(1):siz(1));

arg=-(x.*x+y.*y)/(2*std*std);

h=exp(arg);%在此之前都是严格按照p93页的公式计算的

%下面的代码将上述生成的作h/sum(h(:))

h(h

sumh=sum(h(:));

if sumh~=0,

h=h/sumh;

end;

w_laplacian=fspecial('laplacian',0.5);%大小为3*3的拉普拉斯滤波器

w_log=fspecial('log',[55],0.5);%大小为5*5,标准差为0.5的高斯——拉普拉斯滤波器

%%27-43行代码是库函数fspecial中生成高斯——拉普拉斯滤波掩模的具体代码.参照P460的公式

%first calculate Gaussian

p2=[55];

p3=0.5;

siz=(p2-1)/2;

std2=p3^2;

[x,y]=meshgrid(-siz(2):siz(2),-siz(1):siz(1));

arg=-(x.*x+y.*y)/(2*std2);

h=exp(arg);

h(h

sumh=sum(h(:));

if sumh~=0,

h=h/sumh;

end;

%now calculate Laplacian

h1=h.*(x.*x+y.*y-2*std2)/(std2^2);

h=h1-sum(h1(:))/prod(p2);%make the filter sum to zero,sum(h)->0;

(二)锐化空间滤波器

1、关于一阶二阶微分的分析(P98)

2、二阶微分图像锐化——拉普拉斯算子

close all;

clear all;

clc;

f=imread('Fig0338(a)(blurry_moon).tif');

figure,imshow(f);

原图

w=fspecial('laplacian',0);

g1=imfilter(f,w,'replicate');

figure,imshow(g1,[]);

结果分析:上图的所有像素值都为正,。由于滤波器的中心为负数,所以我们希望得到带负值的拉普拉斯图像。上面的代码中,输入计算的图像为uint8类,使用imfilter滤波后的输出图像将会转化为与输入

图像相同的类,所有负值被剪掉为0.所以可以再滤波前将输入图像转化为double类。代码如下

f=im2double(f);

w=fspecial('laplacian',0);

g2=imfilter(f,w,'replicate');

figure,imshow(g2,[]);

g=f-g2;%相减恢复失去的色调

figure,imshow(g);

相关文档
最新文档