1. 程式人生 > 其它 >【影象邊緣檢測】基於matlab拉普拉斯演算法影象邊緣檢測與增強【含Matlab原始碼 456期】

【影象邊緣檢測】基於matlab拉普拉斯演算法影象邊緣檢測與增強【含Matlab原始碼 456期】

一、簡介

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