【影象邊緣檢測】基於matlab拉普拉斯演算法影象邊緣檢測與增強【含Matlab原始碼 456期】
阿新 • • 發佈:2021-06-28
一、簡介
1 【摘要】
Laplace運算元作為邊緣檢測之一,和Sobel運算元一樣也是工程數學中常用的一種積分變換,屬於空間銳化濾波操作。拉普拉斯運算元(Laplace Operator)是n維歐幾里德空間中的一個二階微分運算元,定義為梯度(▽f)的散度(▽·f)。拉普拉斯運算元也可以推廣為定義在黎曼流形上的橢圓型運算元,稱為拉普拉斯-貝爾特拉米運算元。
2 原理
拉普拉斯運算元是二階微分線性運算元,在影象邊緣處理中,二階微分的邊緣定位能力更強,銳化效果更好,因此在進行影象邊緣處理時,直接採用二階微分運算元而不使用一階微分。
3 邊緣演算法:laplacian
對噪聲較為敏感,使噪聲能力成分得到加強,容易丟失部分邊緣方向資訊,造成一些不連續的檢測邊緣,同時抗噪聲能力較差。
二、原始碼
clc; clear; hold off; I = imread('lena.bmp'); figure(1); imshow(I); title('Lena原圖'); % J1 = imnoise(I,'gaussian',0,0.01); %高斯噪聲 % figure(2); % imshow(J1); % J2 = imnoise(I,'salt & pepper',0.02); %椒鹽噪聲 % figure(3); % imshow(J2); %--------------------二階微分運算元邊緣檢測----------------------- c = [-1 -1 -1 %laplacian運算元 -1 8 -1 -1 -1 -1] I = double(I); for j = 2:255 for i = 2:255 b1 = I(j-1,i-1); b2 = I(j-1,i); b3 = I(j-1,i+1); b4 = I(j,i-1); b5 = I(j,i); b6 = I(j,i+1); b7 = I(j+1,i-1); b8 = I(j+1,i); b9 = I(j+1,i+1); buffer(j,i) = b1*c(1,1) + b2*c(1,2) + b3*c(1,3) + b4*c(2,1) + b5*c(2,2) + b6*c(2,3) + b7*c(3,1) + b8*c(3,2) + b9*c(3,3); J(j,i) = uint8(buffer(j,i)); if J(j,i) < 0 J(j,i) = -J(j,i); end if J(j,i) > 255 J(j,i) = 255; end end end for i = 1:256 J(1,i) = I(1,i); J(256,i) = I(256,i); end for j = 1:256 J(j,1) = I(j,1); J(j,256) = I(j,256); end
三、執行結果
四、備註
版本:2014a
完整程式碼或代寫加QQ1564658423