2012-02-27 18 views
7

作爲我項目的先決條件,我必須從圖像中去除皮膚毛髮。爲此我找到了一個already existing program。該實現在Matlab中完成。脫毛算法開發

上述鏈接引用了以下

  1. 它通過一個廣義灰度形態關閉操作識別深色頭髮位置,
  2. 它驗證頭髮像素作爲薄和長結構的形狀,並更換通過雙線性插值驗證的像素,並使用自適應中值濾波器平滑替換的頭髮像素。

至於其中提到generalized grayscale morphological closing operation我無法找出是什麼意思,不能夠實現它在Matlab要麼

上述部分目前我需要做的只是

  1. 識別頭髮像素
  2. 驗證頭髮像素
  3. 用相鄰的皮膚像素替換頭髮像素

我想知道是否可以提供任何可用於執行此算法(邊緣檢測等)的方法,至今爲止所有的嘗試都沒有合理解決。任何可以使用的matlab函數也會非常有用。也想知道我可以用什麼方法來驗證像素爲薄和長結構

更新:由於我是圖像處理新手,我沒有任何關於如何識別頭髮像素,驗證它們並將它們替換爲相鄰像素,從而請求引導

+0

嘗試[信號處理堆棧](http://dsp.stackexchange.com) – Nzbuu 2012-02-27 11:16:22

回答

3

我會假設您明白灰度圖像是什麼以及對它的操作是什麼。如果沒有,編輯你的問題來澄清。

Matlab圖像處理工具箱包括imclose函數。 Morphological closing在Wikipedia上進行了解釋。互聯網充斥着關於 圖像處理的數學形態學信息

EDIT評論

This page後給出數學形態學圖像處理的一般性介紹。你想要做的一個觀點是從圖像中去除噪聲,在那裏噪聲表現爲在淺色背景下表現爲長而粗的黑色元素 - 如果毛髮是黑色的,皮膚很輕。這不是我看過的應用程序,所以我無法提供任何幫助。玩的開心。

+0

更新了這個問題,當然我確實知道灰度圖像是什麼,我不知道可以使用哪些操作之上。看看matlab中形態學上接近的圖像操作符,它所做的是用磁盤或任何其他所需形狀替換像素是否正確?你能解釋一下它是如何用於識別頭髮像素並將其替換爲相鄰像素的目的 – MilindaD 2012-02-27 17:39:50

0

操作順序爲1.識別頭髮像素2.驗證頭髮像素3.用相鄰的皮膚像素替換頭髮像素。這主要是因爲形態學開放過濾器是灰度或標量過濾器。 因此,彩色圖像中的問題可以通過尋找一個好的色彩空間來解決(通常隨着背景的變化而變硬),或者在每個通道上執行閉合(如上面的回答狀態:如果頭髮是黑色的而背景是輕的)濾波器和插入其他,這是當前的解決方案。

因此,我們可以看看在什麼MATLAB與什麼是在文件中提到,以檢測長頭髮的結構給:

se1 = strel('line',10,90); 
se2 = strel('line',10,180); 
figure, imshow(imclose(imclose(I,se1),se2),[]) % this closing is done channel wise independently. 

對於複雜背景下的一個很好的色彩空間特性是必要的。下面是作品或多或少因爲彩色圖像是有序的(紅色>綠色>藍色或一些這樣的命令 - 你可以驗證這一點) Input image from the website Line filtered image

現在的問題是由於封閉內插在遺漏值留下一些文物。可以使用Lee T,Ng V,Gallagher R,Coldman A,McLean D.DullRazor中提出的內插中值濾波:從圖像中去除毛髮的軟件方法。 Computers in Biology and Medicine 1997; 27:533-543。

另一個簡單的想法是執行rgb2gray(I) - >使用線性結構進行Morhological關閉 - >將灰度圖映射回RGB色調。如果背景顏色空間變化不大並且很健壯,則反映很簡單!