數字圖像處理之銳化處理


數字圖像處理之銳化處理

                                          by方陽

 

版權聲明:本文為博主原創文章,轉載請指明轉載地址

http://www.cnblogs.com/fydeblog/p/6748411.html

 

今天介紹圖像的銳化處理

 

相關知識:拉普拉斯算子、sobel算子、銳化濾波

 

1.理論知識

拉普拉斯算子是一個是n維歐幾里德空間中的一個二階微分算子,它的定義如下:

                

在x方向上

        

在y方向上

         

合起來就是

           

拉普拉斯強調的是圖像中灰度的突變,並不強調圖像的灰度緩變(灰度緩變由一階微分,也就是梯度,圖像應用是sobel算子,具體下面介紹)

根據上邊的表達式,可以確定拉普拉斯算子的模板

例如:

        [ 0 1 0

          1 -4 0

          0  1  0]

這是以90度增量旋轉的拉普拉斯算子,如果以45度增量旋轉會是怎樣的結果呢,結果如下:

        [1 1 1

         1 -8 1

         1  1 1]

注:這里的旋轉是繞算子的中心

 

然后說說sobel算子,它的定義是

那么怎樣理解呢,這里插個鏈接,對sobel算子的推導、說明、應用和參考代碼都有,個人覺得非常不錯。

 http://blog.csdn.net/tonyshengtan/article/details/43698711

 

2.本次內容

 

2.1任意選擇一副灰度圖像,使用拉普拉斯算子對圖像進行銳化濾波,並和原圖像疊加,實現對圖像的增強。
2.2任意選擇一副圖像,使用 sobel 算子對圖像進行銳化濾波,觀察濾波效果。
2.3任意選擇一副圖像,構造一個中心系數為-24 的 5×5 的類似於拉普拉斯模板對圖像進行銳化,與中心系數為-8 的 3×3 拉普拉斯算子的結果相比,是否能得到更加清晰的結果?

 

2.1 銳化之拉普拉斯算子

參考代碼:

 

Laplace=[0 1 0;1 -4 1;0 1 0];
I=imread('cameraman.tif');
I1=fy_Sharpen_filter(I,Laplace,2);
I2=I+I1;
figure;
subplot(1,3,1);
imshow(I);
title('原圖');
subplot(1,3,2);
imshow(I1);
title('拉普拉斯銳化輸出');
subplot(1,3,3);
imshow(I2);
title('與原圖疊加');

 

 fy_Sharpen_filter函數參考代碼:

%image_in為輸入圖像,Operator是算子,image_out為輸出圖像
function image_out=fy_Sharpen_filter(image_in,Operator,dimension)
[m,n]=size(image_in);
[a,b]=size(Operator);
if dimension==3
 n=n/3;%由於我的灰度圖像是185x194x3的,所以除了3,你們如果是PxQ的,就不要加了
end
 A=zeros(m+2*(a-1),n+2*(b-1));%構造矩陣
 B=A;%用來存放均值后A的值
 C=zeros(m,n);%存最后的輸出結果
 for i=a:m+a-1
     for j=b:n+b-1
        A(i,j)= image_in(i-a+1,j-b+1);%填充圖像到A
     end
 end
 [L,T]=size(A);
 %以下是實現均值相關運算
 for i=1:L-a+1
     for j=1:T-b+1
         for p=1:a
             for q=1:b
         B(i+(a-1)/2,j+(b-1)/2)=B(i+(a-1)/2,j+(b-1)/2)+A(p+i-1,q+j-1)*Operator(p,q);
             end
         end
     end
 end
B=uint8(B/(a*b));
for x=a:m+a-1
     for y=b:n+b-1
     C(x-a+1,y-b+1)=B(x,y);
     end
 end
image_out=uint8(C);

 運行結果:

2.2 銳化之sobel算子

參考代碼:

 

Sobel_x=[-1 -2 -1;0 0 0;1 2 1];
Sobel_y=[-1 0 1;-2 0 2;-1 0 1];
I3=imread('cameraman.tif');
I4=fy_Sharpen_filter(I3,Sobel_x,2);
I5=fy_Sharpen_filter(I3,Sobel_y,2);
figure;
subplot(1,3,1);
imshow(I3);
title('原圖');
subplot(1,3,2);
imshow(I4);
title('sobel水平銳化輸出');
subplot(1,3,3);
imshow(I5);
title('sobel垂直銳化輸出');

 

 實驗結果:

2.3 5x5與3x3

參考代碼:

 

Laplace3x3=[ 1 1 1;
             1 -8 1;
             1 1 1];
Laplace5x5=[ 0  0  2  0  0;
             0  4  0  4  0;
             2  0 -24 0  2;
             0  4  0  4  0;
             0  0  2  0  0];
I6=imread('circuit.jpg');
I7=fy_Sharpen_filter(I6,Laplace3x3,3);
I8=fy_Sharpen_filter(I6,Laplace5x5,3);
figure;
subplot(1,3,1);
imshow(I6);
title('原圖');
subplot(1,3,2);
imshow(I7);
title('Laplace3x3');
subplot(1,3,3);
imshow(I8);
title('Laplace5x5');

 

 運行結果:

3.結果分析

(1)由圖一可看出,拉普拉斯算子可提取出了圖像的邊緣特征,與原圖疊加后新的圖形的邊緣被增強了

(2)由圖二可看出,sobel算子的橫向銳化模板和縱向銳化模板得出結果不相同,橫向銳化得出的圖形也偏橫向,縱向偏縱向;

(3)由圖三可看出,laplace5X5的銳化結果明顯比laplace3X3的結果更加清晰,原因一個是模板大小,另一個是模板的變化狀態,laplace5X5比laplace3X3的模板大且變化幅度大,銳化出的特征也就越明顯。

 

最后,才學疏淺,如有不當地方還請海涵,感謝指點!

 


免責聲明!

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



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