matlab对图片边缘化处理
圖片邊緣化處理
五種方法
? ? ? ? 圖像邊緣:是圖像的重要特征,是圖像中特性(如像素灰度、紋理等)分布的不連續(xù)處,圖像周圍特性有階躍變化或屋脊?fàn)钭兓哪切┫袼丶?。圖像的邊緣部分集中了圖像的大部分信息,一幅圖像的邊緣結(jié)構(gòu)與特點(diǎn)往往是決定圖像特質(zhì)的重要部分。圖像邊緣的另一個(gè)定義是指其周圍像素灰度變化不連續(xù)的那些像素的集合。邊緣廣泛存在于物體與背景之間、物體與物體之間,因此,邊緣是圖像分割、圖像理解及圖像識(shí)別的重要特征。
圖像邊緣檢測(cè)主要用于增強(qiáng)圖像中的輪廓邊緣、細(xì)節(jié)以及灰度跳變部分,形成完整的物體邊界,達(dá)到將物體從圖像中分離出來(lái)或?qū)⒈硎就晃矬w表面的區(qū)域檢測(cè)出來(lái)的目的。目前為止最通用的方法是檢測(cè)亮度值的不連續(xù)性,用一階和二階導(dǎo)數(shù)檢測(cè)的。
1.微分法
? ? ? ?微分法的目的是利用微分運(yùn)算求信號(hào)的變化率,加強(qiáng)高頻分量的作用,從而使輪廓清晰。遵循如下兩個(gè)基本準(zhǔn)則之一:找到亮度的一階導(dǎo)數(shù)在幅度上比指定的閾值大的地方;找到亮度的二階導(dǎo)數(shù)有零交叉的地方。?
2.差分邊緣檢測(cè)方法
? ? ? 利用像素灰度的一階導(dǎo)數(shù)算子在灰度迅速變化處得到高值來(lái)進(jìn)行奇異點(diǎn)的檢測(cè)。它在某一點(diǎn)的值就代表該點(diǎn)的邊緣強(qiáng)度,通過(guò)對(duì)這些值設(shè)置閾值來(lái)進(jìn)一步得到邊緣圖像。差分邊緣檢測(cè)方法是最原始、最基本的方法。但要求差分方向與邊緣方向垂直,這就需要對(duì)圖像的不同方向(一般為垂直方向、水平方向和對(duì)角線方向)都進(jìn)行差分運(yùn)算,增加了實(shí)際運(yùn)算的繁瑣性,目前很少采用。
3.Roberts邊緣檢測(cè)算子
? ? ? ?Roberts邊緣檢測(cè)算子根據(jù)任意一對(duì)互相垂直方向上的差分可用來(lái)計(jì)算梯度的原理,采用對(duì)角線方向相鄰兩像素之差然后計(jì)算出Roberts的梯度幅度值.
Roberts檢測(cè)器較為簡(jiǎn)單,但具有一些功能上的限制,例如,它是非對(duì)稱的,而且不能檢測(cè)諸如45°倍數(shù)的邊緣。然而,它還是經(jīng)常用于硬件實(shí)現(xiàn)中,因?yàn)樗群?jiǎn)單又快速。
4.Sobel邊緣檢測(cè)算子
? ? ? ? 對(duì)數(shù)字圖像的每個(gè)像素,考察它上下左右鄰點(diǎn)灰度的加權(quán)差,與之接近的鄰點(diǎn)的權(quán)大。
Sobel算子很容易在空間上實(shí)現(xiàn),邊緣檢測(cè)效果較好,且受噪聲的影響也較小。鄰域增大抗噪性會(huì)更好,但計(jì)算量也會(huì)增大,得出的邊緣也會(huì)相應(yīng)變粗。Sobel算子會(huì)檢測(cè)出許多偽邊緣,邊緣定位精度不夠高,在精度要求不高時(shí)是一種較常用的邊緣檢測(cè)方法。
5.Prewitt邊緣檢測(cè)算子
? ? ? ?圖像中的每個(gè)像素都用這兩個(gè)核作卷積,一個(gè)核對(duì)垂直邊緣影響最大,另一個(gè)核對(duì)水平邊緣影響最大。兩個(gè)卷積的絕對(duì)值的最大值作為該點(diǎn)的輸出值。不能簡(jiǎn)單的將小于0的值處理為0,這樣會(huì)丟失信息。它比Sobel檢測(cè)器在計(jì)算上要簡(jiǎn)單一些,但比較容易產(chǎn)生一些噪聲。
6.拉普拉斯邊緣檢測(cè)算子
? ? ? ?拉普拉斯邊緣檢測(cè)算子是一種二階微分算子,與其它邊緣檢測(cè)方法的不同之處在于,該方法是一種各向同性的檢測(cè)方法,即其邊緣的增強(qiáng)程度與邊緣的方向無(wú)關(guān),從而可以滿足不同走向的邊緣銳化的要求。
拉普拉斯算子自身很少被直接用作邊緣檢測(cè),因?yàn)槎A導(dǎo)數(shù)對(duì)噪聲具有無(wú)法接受的敏感性,它的幅度會(huì)產(chǎn)生雙邊緣,而且它不能檢測(cè)邊緣的方向。然而,當(dāng)與其它邊緣檢測(cè)技術(shù)組合使用時(shí),拉普拉斯算子是一種有效的補(bǔ)充方法。例如,雖然它的雙邊緣使得它不適合直接用于邊緣檢測(cè),但該性質(zhì)可用于邊緣定位。
MATLAB實(shí)現(xiàn)
? ? ??在MATLAB中可以由edge函數(shù)實(shí)現(xiàn)各算子對(duì)邊緣的檢測(cè),其調(diào)用格式為:
- BW = edge(I,’METHOD’)—自動(dòng)選擇閾值用指定的算子進(jìn)行邊緣檢測(cè);
- BW = edge(I,’METHOD’,THRESH)—根據(jù)給定的閾值THRESH用指定的算子進(jìn)行邊緣檢測(cè),忽略所有小于閾值的邊緣。當(dāng)THRESH為空時(shí),自動(dòng)選擇閾值;
- [BW, THRESH] = edge(I,’METHOD’,…)—返回edge使用的閾值,以確定哪個(gè)梯度值足夠大到可以稱為邊緣點(diǎn)。
? ? ? ?其中,I為輸入圖像。返回圖像BW為與I同大的二值圖像,1表示邊緣,0表示非邊緣。I是unit8型、unit16型,或者是double型,BW是unit8型。
METHOD:使用檢測(cè)算子的類型,經(jīng)常使用的有:
sobel:缺省值,用導(dǎo)數(shù)的sobel近似值檢測(cè)邊緣,那些梯度最大的點(diǎn)返回邊緣。
roberts:用導(dǎo)數(shù)的roberts近似值檢測(cè)邊緣,那些梯度最大的點(diǎn)返回邊緣。
prewitt:用導(dǎo)數(shù)的prewitt近似值檢測(cè)邊緣,那些梯度最大的點(diǎn)返回邊緣。
LoG:用LoG算子檢測(cè)邊緣。
Canny:用Canny算子檢測(cè)邊緣。
THRESH:指定的閾值,所有不強(qiáng)于thresh的邊緣都被忽略。
?
?
clear clc I=imread('dmm.png'); %imshow(x) I=rgb2gray(I); BW1 = edge(I,'sobel');? ?%sobel邊緣檢測(cè)算子 BW2 = edge(I,'roberts');? %Roberts邊緣檢測(cè)算子 BW3 = edge(I,'prewitt');? %prewitt邊緣檢測(cè)算子 BW4 = edge(I,'log');? ? ?%log邊緣檢測(cè)算子 BW5 = edge(I,'canny');? ?%canny邊緣檢測(cè)算子 subplot(2,3,1),imshow(I),title('灰度圖','fontname','Times New Roman','Color','r','FontSize',16); subplot(2,3,2),imshow(BW1),title('sobel','fontname','Times New Roman','Color','b','FontSize',16) subplot(2,3,3),imshow(BW2),title('roberts','fontname','Times New Roman','Color','y','FontSize',16) subplot(2,3,4),imshow(BW3),title('prewitt','fontname','Times New Roman','Color','m','FontSize',16) subplot(2,3,5),imshow(BW4),title('log','fontname','Times New Roman','Color','g','FontSize',16) subplot(2,3,6),imshow(BW5),title('canny','fontname','Times New Roman','Color','b','FontSize',16)?
?
歡迎加群:707914447
?
總結(jié)
以上是生活随笔為你收集整理的matlab对图片边缘化处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java将Word转为图片完美解决方案(
- 下一篇: 少数者博弈 matlab,少数者博弈