【圖像處理】圖像銳化的工作原理和算法實現(matlab實現)

實驗目的

1、掌握一階銳化算法的工作原理和算法實現。
2、掌握二階銳化算法的工作原理和算法實現。

實驗內容

測試圖片

鏈接: https://pan.baidu.com/s/1-7zn44maHCCI7w9qaZjvxg

提取碼: dakh

實現拉普拉斯銳化

實驗代碼

im = imread('.\im\Grayblur6.png');
imshow(im); title('原始圖像');
im0 = im;
im = double(im);

H = [0 -1 0;-1 4 -1;0 -1 0];
im1 = filter2(H,im);

im2 = uint8(im1+im);
figure; imshow(im2); title('Laplacian銳化疊加後圖像');

im_L0 = uint8(im1);
figure; imshow(im_L0); title('Laplacian銳化');
im=imread('im\Grayblur6.png')
imshow(im);
title('原始圖像');
im0=im;
im=double(im);

H=[0 -1 0;-1 4 -1;0 -1 0];
im1=filter2(H,im);

im2=uint8(im1+im);
figure,imshow(im2);
title('Laplacian銳化疊加後的圖像');

im_L0=uint8(im1);
figure,imshow(im_L0);
title('Laplacian銳化');

maxV=max(max(im1));
minV=min(min(im1));
delta=0;
if(minV<0)
    delta=abs(minV);
end

實驗結果

實現Sobel微分算子的代碼

實驗代碼

im = imread('.\im\Grayblur6.png');
imshow(im); title('原始圖像');
im = double(im);

H = [-1 0 1;-2 0 2;-1 0 1];
Dy = filter2(H,im);

H = [-1 -2 -1;0 0 0;1 2 1];
Dx = filter2(H,im);

im_2 = sqrt(Dx.^2+Dy.^2);
im_2 = uint8(im_2);
figure; imshow(im_2); title('Sobel銳化圖像'); %顯示濾波後的圖像

im_3 = uint8(im+sqrt(Dx.^2+Dy.^2)*0.1);
figure; imshow(im_3); title('Sobel銳化疊加圖像'); %顯示濾波後的圖像

實驗結果

實現交叉微分算法(Roberts算法)

實驗步驟

讀入圖像到矩陣F
得到F的行列數與顏色通道數:m,n,c
如果顏色通道數c>1,則將彩色圖像轉化爲灰度圖rgb2gray
初始化輸出矩陣G
對於F的每一行i(1到m-1)
     對於F的每一列j(1到n-1) 
     根據以下公式,由F(i,j)F(i+1,j)F(i,j+1)F(i+1,j+1)計算G(i,j)
顯示Roberts銳化圖像
顯示Roberts銳化併疊加原圖的結果圖像

實驗代碼

im = imread('.\im\Grayblur6.png');
imshow(im); title('原始圖像');
[row,col,k] = size(im);
if(k>1) 
    im = rgb2gray(im);
end
im = double(im);
G = zeros(row,col);
for i=2:row-1
    for j=2:col-1
        G(i,j) = abs(im(i+1,j+1)-im(i,j)) + abs(im(i+1,j)-im(i,j+1));
    end
end
g = uint8(G);
figure; imshow(g); title('Roberts銳化併疊加原圖的結果圖像')

實驗結果

學如逆水行舟,不進則退
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章