圖像處理之圖像的平滑與銳化


圖像處理之圖像的平滑與銳化
概念:
銳化就是通過增強高頻分量來減少圖象中的模糊,因此又稱為高通濾波。銳化處理在增強圖象邊緣的同時增加了圖象的噪聲。
平滑與銳化相反,就是濾掉高頻分量,從而達到減少圖象噪聲,使圖片變得有些模糊。
一、灰度化
灰度化,也就是黑白化,就是將圖像進行黑白處理,使其失去色彩。而從像素點出發,就是使各個像素點的三種顏色分量R、G、B的值相同。

常用的黑白化的方法有三種:

第一種是最大值法(Maximum):
                   R=G=B=Max(R,G,B),這種方法處理后灰度圖象的亮度會偏高,不建議采用。

第二種就是平均值法(Average):
                   R=G=B=(R+G+B)/3,這種方法處理后灰度圖象的亮度較柔和,本人就是采用的這種方法。

第三種是加權平均值法(Weighted Average):
                   R=G=B=wr*R+wg*G+wb*B,wr、wg、wb分別為R、G、B的權值。

鑒於本人只使用了第二種,所以就先貼上第二種的代碼:
src=imread('background.bmp');
[m,n,channel]=size(src);
desc=zeros(m,n);
desc=double(desc);
for i=1:m
for j=1:n
for k=1:channel
desc(i,j)=desc(i,j)+src(i,j,k);
end
desc(i,j)=desc(i,j)/3;
end
end
imshow(uint8(desc));

二、銳化
銳化就是通過增強高頻分量來減少圖象中的模糊,因此又稱為高通濾波。銳化處理在增強圖象邊緣的同時增加了圖象的噪聲。

常用的銳化模板是拉普拉斯(Laplacian)模板,而本人也是采用的拉普拉斯模板進行的銳化處理。

[-1,-1,-1]

[-1,9,-1]

[-1,-1,-1]

三、平滑
平滑與銳化相反,就是濾掉高頻分量,從而達到減少圖象噪聲,使圖片變得有些模糊。

常用的平滑處理方法有三種:

Box模板去噪平滑處理,也就是均一化處理。
                     Box模板是{1,1,1,1,1,1,1,1,1}

高斯模板去噪平滑處理,就是在Box模板的基礎上加入了加權系數,考慮了距離某點位置越近影響越大的因素。相比Box模板,較為清晰一些。
                     高斯模板是{1,2,1,2,4,2,1,2,1}

中值濾波去噪平滑處理,就是將該點左右鄰近的兩個點的rgb值與該點自身進行比較,選擇其中最中間的值賦給該點。


最終代碼:
Img1=imread('Fig4.jpg');subplot(3,3,1);imshow(Img1);title('Fig4.jpg');
w1=[1,1,1;1,1,1;1,1,1];w2=[1,2,1;2,4,2;1,2,1];
w3=[-1,-2,-1;0,0,0;1,2,1];w4=[-1,0,1;-2,0,2;-1,0,1];
k1=1/sum(sum(w1));k2=1/sum(sum(w2));
variance=225;
[m,n]=size(Img1);
I1=uint8(double(Img1)+randn(m,n).*sqrt(variance)+5);
subplot(3,3,2);imshow(I1);title('gs.png');

II1=double(I1);
II11=double(I1);
II111=double(I1);
for i=2:m-1
for j=2:n-1
p=[II1(i-1,j-1),II1(i-1,j),II1(i-1,j+1);II1(i,j-1),II1(i,j),II1(i,j+1);II1(i+1,j-1),II1(i+1,j),II1(i+1,j+1)];
II1(i,j)=sum(sum((p.*w1)*k1));
a=(p.*w1);
pp=sort(reshape(a,1,9));
II11(i,j)=pp(5);
II111(i,j)=abs(sum(sum(p.*w3)))+abs(sum(sum(p.*w4)));
end
end
subplot(3,3,5);imshow(uint8(II1));title('normal 均值濾波 gs.png');
subplot(3,3,8);imshow(uint8(II11));title('normal 中值濾波 gs.png');
subplot(3,3,7);imshow(uint8(II11));title('normal 銳化 gs.png');
I2=Img1;
a=rand(m,n);
for i=1:m
for j=1:n
if(a(i,j)>0.975)
I2(i,j)=255;
elseif(a(i,j)<0.05)
I2(i,j)=0;
end
end
end
subplot(3,3,3);imshow(I2);title('jyzs.png');
II2=double(I2);
II22=double(I2);
for i=2:m-1
for j=2:n-1
p=[II2(i-1,j-1),II2(i-1,j),II2(i-1,j+1);II2(i,j-1),II2(i,j),II2(i,j+1);II2(i+1,j-1),II2(i+1,j),II2(i+1,j+1)];
II2(i,j)=sum(sum((p.*w2)*k2));
a=(p.*w1);
pp=sort(reshape(a,1,9));
II22(i,j)=pp(5);
end
end
subplot(3,3,6);imshow(uint8(II2));title('normal jyzs.png');
subplot(3,3,9);imshow(uint8(II22));title('normal 中值濾波 jyzs.png');

 

原文:https://blog.csdn.net/qq_26399665/article/details/53496958


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM