邊緣檢測運算元 一階之Sobel(索貝爾)運算元

2021-10-01 02:10:07 字數 1391 閱讀 7093

sobel運算元的檢測過程

將影象的每乙個點都用sobel運算元做卷積:乙個用來檢測垂直邊緣,乙個用來檢測水平邊緣,而最後兩個卷積的最大值將作為該點的輸出,即檢測後的灰度。

sobel運算元

sobel運算元包括兩組3*3的矩陣,左邊的表示垂直,右邊的表示水平。將它與影象作平面卷積,即可分別得出垂直及水平的亮度差分近似值。

主要**

clear all; 

close all;

imag = imread('face7.jpg'); %讀取關鍵幀

imag = rgb2gray(imag); %轉化為灰度圖

subplot(131);imshow(imag):title('原圖');

[high,width] = size(imag); % 獲得影象的高度和寬度

f2 = double(imag);

u = double(imag);

usobel = imag;

for i = 2:high - 1 %sobel邊緣檢測

for j = 2:width - 1

gx = (u(i+1,j-1) + 2*u(i+1,j) + f2(i+1,j+1)) - (u(i-1,j-1) + 2*u(i-1,j) + f2(i-1,j+1));

gy = (u(i-1,j+1) + 2*u(i,j+1) + f2(i+1,j+1)) - (u(i-1,j-1) + 2*u(i,j-1) + f2(i+1,j-1));

usobel(i,j) = sqrt(gx^2 + gy^2);

endend

subplot(132);imshow(im2uint8(usobel)):title('邊緣檢測後'); %畫出邊緣檢測後的影象

% matlab自帶函式邊緣檢測

% k為獲取得到的關鍵幀的灰度圖

bw3 = edge(imag,'sobel', 0.09);

subplot(133);imshow(bw3,):title('matlab自帶函式邊緣檢測');在這裡插入**片

如果想用matlab自帶的其他運算元進行邊緣檢測的話,直接將edge中的sobel引數修改即可

邊緣檢測之Sobel檢測運算元

在討論邊緣運算元之前,首先給出一些術語的定義 1 邊緣 灰度或結構等資訊的突變處,邊緣是乙個區域的結束,也是另乙個區域的開始,利用該特徵可以分割影象。2 邊緣點 影象中具有座標 x,y 且處在強度顯著變化的位置上的點。3 邊緣段 對應於邊緣點座標 x,y 及其方位 邊緣的方位可能是梯度角。二 sob...

一階微分邊緣檢測運算元

l運算元的原理 roberts運算元 sobel 運算元和prewitt 運算元是三種常用微分邊緣檢測運算元 5 這三個運算元都以一階導數為基礎,先通過合適的微分運算元計算出影象的梯度矩陣,再對梯度矩陣進行二值化從而得到影象的邊緣。這三種演算法的原理如下,其中i為影象矩陣,g i,j 為最終的梯度矩...

imgproc模組 Sobel邊緣檢測運算元

1.目的 1 如何使用opencv函式sobel對影象求導數 2 如何使用opencv函式scharr對影象求導數 2.原理 1 影象邊緣 影象邊緣是影象畫素發生顯著變化的位置。使用卷積運算可以近似計算影象梯度,檢測影象邊緣,梯度值大意味影象內容發生顯著變化,可以認為該處為影象的邊緣處。2 sobe...