####概述:
邊緣檢測是影象處理和計算機視覺中的基本問題,邊緣檢測的目的是標識數字影象中亮度變化明顯的點。
影象屬性中的顯著變化通常反映了屬性的重要事件和變化。 這些包括(i)深度上的不連續、
(ii)表面方向不連續、(iii)物質屬性變化和(iv)場景照明變化。
邊緣檢測是影象處理和計算機視覺中,尤其是特徵提取中的乙個研究領域。
使用matlab內部函式edge實現邊緣檢測演算法:
i=imread('lena.jpg');%提取影象
img=rgb2gray(i);
[m,n]=size(img);
bw1=edge(img,'sobel'); %用sobel運算元進行邊緣檢測
bw2=edge(img,'roberts');%用roberts運算元進行邊緣檢測
bw3=edge(img,'prewitt'); %用prewitt運算元進行邊緣檢測
bw4=edge(img,'log'); %用log運算元進行邊緣檢測
bw5=edge(img,'canny'); %用canny運算元進行邊緣檢測
h=fspecial('gaussian',5);%¸高斯濾波
bw6=edge(img,'canny');%高斯濾波後使用canny運算元進行邊緣檢測
subplot(2,3,1), imshow(bw1);
title('sobel edge check');
subplot(2,3,2), imshow(bw2);
title('roberts edge check');
subplot(2,3,3), imshow(bw3);
title('prewitt edge check');
subplot(2,3,4), imshow(bw4);
title('log edge check');
subplot(2,3,5), imshow(bw5);
title('canny edge check');
subplot(2,3,6), imshow(bw6);
title('gasussian&canny edge check');
1)laplacian 運算元的實現:
clear;
sourcepic=imread('lena.jpg');%影象讀入
graypic=mat2gray(sourcepic);%實現影象的矩陣歸一化操作
[m,n]=size(graypic);
newgraypic=graypic;
laplaciannum=0;%經laplacian操作得到的每個畫素的值
laplacianthreshold=0.2;%設定閾值
for j=2:m-1 %進行邊界提取
for k=2:n-1
laplaciannum=abs(4*graypic(j,k)-graypic(j-1,k)-graypic(j+1,k)-graypic(j,k+1)-graypic(j,k-1));
if(laplaciannum > laplacianthreshold)
newgraypic(j,k)=255;
else
newgraypic(j,k)=0;
endend
endfigure,imshow(newgraypic);
title('laplacian運算元的處理結果')
影象增強演算法的基本原則是「降低低頻區域,突出高頻區域」,以此強化邊緣,達到增強的目的。
最簡單的例子就是通過原始影象減去高斯模糊處理後的影象,就能夠將邊緣強化出來
MATLAB中的邊緣檢測比較
邊緣 edge 是指影象區域性亮度變化顯著的部分。邊緣主要存在與目標與目標 目標與背景 區域與區域之間,是影象分割 紋理特徵提取和形狀特徵提取等影象分析的重要基礎。影象分析和理解的第一步常常是邊緣檢測 edge detection 在討論邊緣運算元之前,首先給出下列幾個術語的定義 邊緣點 影象中亮度...
matlab練習程式(Canny邊緣檢測)
matlab練習程式 canny邊緣檢測 我可沒直接呼叫系統函式,要是那樣就太水了。其實我的matlab 很容易就能翻譯成c c 的。canny邊緣檢測一共四個部分 1.對原影象高斯平滑 2.對高斯平滑後的影象進行sobel邊緣檢測。這裡需要求橫的和豎的還有聯合的,所以一共三個需要sobel邊緣檢測...
matlab練習程式(Canny邊緣檢測)
我可沒直接呼叫系統函式,要是那樣就太水了。其實我的matlab 很容易就能翻譯成c c 的。canny邊緣檢測一共四個部分 1.對原影象高斯平滑 2.對高斯平滑後的影象進行sobel邊緣檢測。這裡需要求橫的和豎的還有聯合的,所以一共三個需要sobel邊緣檢測影象。3.對聯合的sobel檢測影象進行非...