(实验操作)掩膜高通滤波filter命令,锐化的matlab 处理 包括锐化前处理;模糊化锐化
实验操作资料比较粗糙,基本上,是边做实验,边做记录.
命令操作如下:
>> clear
>> i=imread('plane.jpg');
>> I=rgb2gray(i);
>> imagetype=isgray(I)
Warning: isgray is obsolete and may be removed in the future.
See product release notes for more information.
> In isgray at 27
imagetype =
1
>> I=double(I);
>> imshow(I);
>> H2=[-1 -1 -1;-1 -9 -1;-1 -1 -1];
>> J1=filter2(H2,I);
>> figure,imshow(J1,map);$//其实,在这里,这个,这个map是应该去掉的,不然会出错,除非一开始,就用
??? Undefined function or variable 'map'.
>> [i,map]=imread('plane.jpg');
>> figure,imshow(J1,map);
>> M=[1 1 1;1 1 1;1 1 1]/9;
>> J2=filter2(M,I);
>> J3=I-J2;
>> figure,imshow(J3,map);
>> figure,imshow(J1);
>> figure,imshow(J3);
>>
采取其他方法,进行滤波,结果差不多说明,锐化前,做好进行一些处理,
>> I=rgb2gray(i);
>> imwrite(I,'plane_0.JPG','JPG');
>> info=imfinfo('plane_0.JPG');
>> info
info =
Filename: 'plane_0.JPG'
FileModDate: '16-May-2009 13:10:14'
FileSize: 15252
Format: 'jpg'
FormatVersion: ''
Width: 640
Height: 480
BitDepth: 8
ColorType: 'grayscale'
FormatSignature: ''
NumberOfSamples: 1
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Comment: {}
>> subplot(2,2,1),imshow(I);title('原图像');%显示原图像
>> H=fspecial('sobel');
>> I2=filter2(H,I);
>> subplot(2,2,2);%显示sobel算子锐化图像
>> imshow(I2);
>> subplot(2,2,2);%显示sobel算子锐化图像
>> H=fspecial('prewitt');%应用prewitt算子锐化图像
>> I3=filter2(H,I);%prewitt算子滤波锐化
>> subplot(2,2,3);imshow(I3); %显示prewitt算子锐化图像
>> title('prewitt算子锐化图像');
>> H=fspecial('log'); %应用log算子锐化图像
>> I4=filter2(H,I); %log算子滤波锐化
>> subplot(2,2,4);imshow(I4);%显示log算子锐化图像
>> title('log算子锐化图像')
>>
>>
锐化前的预处理:
锐化分频域和时域两种方法,在时域可以使用简单的颜色变换来进锐化,但更为合理的做法是在频域通过卷积的方式进行锐化和模糊处理,如最常见的是高斯算法;
关键词:
高斯算法
模糊化锐化
中值滤波和领域平均法滤波
先高斯滤波,再锐化
>> [i,map]=imread('plane.jpg');
>> I=rgb2gray(i);
>> Img = double(I);
>> alf=3;
>> n=10;%定义模板大小
n1=floor((n+1)/2);%计算中心
for i=1:n
for j=1:n
b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf))/(4*pi*alf);
end
end
Img1 = imfilter(I,b,'conv');
subplot(121),imshow(I);title('原图')
subplot(122),imshow(Img1),title('高斯滤波')
>> H=fspecial('prewitt');%应用prewitt算子锐化图像
>> I3=filter2(H,Img1);%rewitt算子滤波锐化
>> subplot(2,2,3);imshow(I3) %显示prewitt算子锐化图像
>>
这个结果显然是不能接受的,比起前面的实验,效果是差得多,或许它实现的不是锐化这个功能,而是一个误操作,