Atitit 圖像處理—圖像形態學(膨脹與腐蝕)


 

Atitit 圖像處理—圖像形態學(膨脹與腐蝕)

 

1.1. 膨脹與腐蝕1

1.2. 圖像處理之二值膨脹及應用2

1.3. 測試原理,可以給一個5*5pic,測試膨脹算法5

1.4. Photoshop里面的處理5

1.5. 類庫的處理,好像沒找到jhlabs,6

1.6. Attilax 源碼6

 

1.1. 膨脹與腐蝕

  說概念可能很難解釋,我們來看圖,首先是原圖:

  膨脹以后會變成這樣:

  腐蝕以后則會變成這樣:

  看起來可能有些莫名其妙,明明是膨脹,為什么字反而變細了,而明明是腐蝕,為什么字反而變粗了。

實際上,所謂膨脹應該指

  較亮色塊膨脹。

而所謂腐蝕應該指

較亮色塊腐蝕。

 

1.2. 圖像處理之二值膨脹及應用

基本原理:

膨脹是圖像形態學的兩個基本操作之一,另外一個是腐蝕操作。最典型的應用是在二值圖像

中使用這兩個基本操作,是很多識別技術中重要的中間處理步驟。在灰度圖像中根據閾值同

樣可以完成膨脹與腐蝕操作。對一幅二值圖像f(x,y)完成膨脹操作,與對圖像的卷積操作類

似,要有個操作數矩陣,最常見的為3X3的矩陣,與卷積操作不同的,是如果矩陣中的像素

點有任意一個點的值是前景色,則設置中心像素點為前景色,否則不變。

 

形態學運算中腐蝕,膨脹,開運算和閉運算:
1. 腐蝕是一種消除邊界點,使邊界向內部收縮的過程。

可以用來消除小且無意義的物體。
腐蝕的算法:
3x3的結構元素,掃描圖像的每一個像素
用結構元素與其覆蓋的二值圖像做操作
如果都為1,結果圖像的該像素為1。否則為0
結果:使二值圖像減小一圈

2. 膨脹是將與物體接觸的所有背景點合並到該物體中,使邊界向外部擴張的過程。

可以用來填補物體中的空洞。
膨脹的算法:
3x3的結構元素,掃描圖像的每一個像素
用結構元素與其覆蓋的二值圖像做操作
如果都為0,結果圖像的該像素為0。否則為1
結果:使二值圖像擴大一圈

3. 先腐蝕后膨脹的過程稱為開運算。

用來消除小物體、在纖細點處分離物體、平滑較大物體的邊界的同時並不明顯改變其面積。

4. 先膨脹后腐蝕的過程稱為閉運算。

用來填充物體內細小空洞、連接鄰近物體、平滑其邊界的同時並不明顯改變其面積。

 

 

讓我們來看看實際上是怎樣進行膨脹運算的。在圖6.14中,左邊是被處理的圖象X(二值圖象,我們針對的是黑點),中間是結構元素B。膨脹的方法是,拿B的中心點和X上的點及X周圍的點一個一個地對,如果B上有一個點落在X的范圍內,則該點就為黑;右邊是膨脹后的結果。可以看出,它包括X的所有范圍,就象X膨脹了一圈似的。

6.13   膨脹的示意圖

6.14   膨脹運算

6.15為圖6.11膨脹后的結果圖,能夠很明顯的看出膨脹的效果。

 

 

粉紅色的方格每次在X/Y前進一個像素方格,就會產生一個新的輸出像素,圖中深藍色的代

表要輸出的像素方格,走完全部的像素方格,就得到了所有輸出像素。

 

圖中,粉紅色的矩陣表示卷積操作數矩陣,黑色表示源圖像每個方格代表一個像素點。

 

 

 

1.3. 測試原理,可以給一個5*5pic,測試膨脹算法

 */

public class ImgGene4test {

public static void main(String[] args) {

BufferedImage dest = new BufferedImage(5,5 ,1);

imgx.setBackgroudColor_White(dest);

dest.setRGB(2, 2, new Color(0,0,0).getRGB());

imgx.save_overwrite(dest, "C:\\00capch\\p5.jpg");

System.out.println("==f");

 

}

1.4. Photoshop里面的處理

鍵后有個文字加粗的.不過我想這個應該滿足不了你的要求.你可以先把文字柵格化,然后選擇->修改->擴展選區,再進行填充.直到你想要的效果.建議你先把文字做得比你想要的大一點.再進行此操作,得到你想要效果后再縮小.因為是把選區進行擴展再填充,所以邊邊色起據齒,放大做再縮小這個問題就不會嚴重了.加分加分.

 

選中文字,在“字符”窗口的左下角,點第一個“T”按鈕,即可變粗,如果還不夠,那就按住ctrl+鼠標單擊文字圖層=》“選擇”=》修改=》擴展,輸入擴展數字確定=》新建圖層,填充即可

 

1.5. 類庫的處理,好像沒找到jhlabs,

1.6. Attilax 源碼

 

@Override

public BufferedImage filter(BufferedImage src, BufferedImage dest) {

BufferedImage dest2 = imgx.new_BackgroudColor_White(src.getWidth(), src.getHeight());

Matrix mtrx = new Matrix(3, 3).setImg(src);

imgx.trave(src, (x, y) -> {

System.out.println("" + x + ":" + y);

 

mtrx.fill_and_setMtrx_leftTop_XY(x, y);

 

boolean mtrx_hasAnyForgeColor = mtrx.hasAnyForgeColor(mtrx_item_color -> {

// dark,,so is forge color.. bkgrd lit..

return (imgx.isDarkColor(imgx.gray(mtrx_item_color)));

 

});

if (mtrx_hasAnyForgeColor) {

int forgeColor2 = mtrx.getForgeColor();

mtrxCenterXy_inImg = mtrx.getCenterXy();

try {

dest2.setRGB((int) mtrxCenterXy_inImg.get("x"), (int) mtrxCenterXy_inImg.get("y"), forgeColor2);

} catch (ArrayIndexOutOfBoundsException e) {

System.out.println("ArrayIndexOutOfBoundsException  x:" + x + ",y:" + y);

}

 

}

});

 

return dest2;

}

 

 

圖像處理之二值膨脹及應用 - 流浪的魚 - 博客頻道 - CSDN.NET.html

圖像處理之二值腐蝕 - 流浪的魚 - 博客頻道 - CSDN.NET.html

圖像的膨脹與腐蝕、細化 - 公爵女子 - 博客園.html

java,不依賴於第三方jar的圖片處理類 - dragonsoar - ITeye技術網站.html

 

作者:: 綽號:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿爾 拉帕努伊 ) 

漢字名:艾提拉(艾龍)   EMAIL:1466519819@qq.com

轉載請注明來源: http://www.cnblogs.com/attilax/

Atiend

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM