邊緣檢測和透明度
回答
如果你的背景圖像中consistend但整個圖像不一致也可能變得棘手,但這裏是我會做什麼:
- 獨立的圖像轉換成一些亮度/色彩的形式,如YUV或Lab。
- 在顏色部分製作直方圖。找到最常見的顏色,這是(最有可能)你的背景(更新)也許一個更好的技巧是從圖像的邊緣找到一個或兩個像素內的所有像素的最常見的顏色。
- 從圖像的邊緣開始,將具有該顏色並通過該顏色的像素連接到邊緣的所有像素設置爲透明。
這件衣服的邊緣現在看起來有點醜陋,因爲它由從背景和衣服上獲得顏色的像素組成。爲了解決這個問題,你需要做更多的工作:
- 通過一些edge detection機制找到這件衣服的邊緣。
- 用僅在邊緣像素「內部」(即該區域中的衣服顏色)和透明(如果輸出圖像格式支持該顏色)的顏色混合替換邊緣像素的顏色。
- 如果你想變得很花哨,你可以增加透明度,這取決於像素的顏色是多少「喜歡」背景顏色。
東西告訴我,如果有人拍下一件衣服的照片,它會安排他的照片,以便它大多填滿圖像。最出現的顏色將因此不是背景。也有了這個算法,如果有的話,衣服是觸摸邊緣,你會從圖像中刪除整件衣服... – 2009-10-28 20:06:11
這是一個很好的觀點。所以你應該看看最接近圖像邊緣的顏色。 – 2009-10-28 21:54:15
如果你知道背景的精確的顏色強度,它永遠不會改變,服裝的文章絕不會用這種顏色一致,那麼這是背景減除的一個簡單的應用,那就是一切不是一個特定的顏色強度被認爲是一個「開」像素,一個有趣的。然後,您可以使用連接組件標籤(http://en.wikipedia.org/wiki/Connected_Component_Labeling)來計算出單獨的對象分組。
感謝您的建議。圖像將由用戶採取。所以我不知道確切的顏色。 – 2009-10-26 20:14:12
彩色圖像,對每一個圖片相同的背景:
- 您的圖像轉換爲HSV或HSL
- 確定背景(+/- 10)的色相值:做到這一步一次,例如使用photoshop,然後在所有圖片上使用相同的值。
- 執行色彩閾值:對於所有其他通道,通常包括整個值範圍(通常爲0到255),在色調通道上排除背景的色調([0,hue [+] hue,255])。這將選擇不是背景的像素。
- 執行「填充孔」操作(通常沿着斑點分析或標記功能發現)以完成可能與背景顏色相同的部分衣服。
- 現在你有一個圖像,它是衣服的「面具」:非零像素代表衣服,0像素代表背景。
- 這一步的處理過程取決於你想如何使像素透明:通常,如果你將圖像保存爲具有alpha(透明度)通道的PNG,請在alpha之間使用邏輯AND(也稱爲「遮罩」)操作在上一步中創建原始圖像的通道和蒙版。
- voilà,背景消失,保存結果圖像。
好吧,我只是讀了全白或全黑背景的評論......這個算法不適合,因爲每張圖片的背景都不一樣。 – 2009-10-26 20:26:41
基本上,找到背景的顏色並減去它,但我想你知道這一點。自動完成這一切有點棘手,但似乎可能。
首先,看看斑點檢測與OpenCV,看看這是否基本上爲你做。
自己做:
找到背景:有幾種選擇。可能最簡單的是對圖像進行直方圖分析,而具有相似值的大量像素是背景,如果有兩個大集合,則背景將是中間有一個大洞的那個。另一種方法是將周圍的帶子作爲背景顏色,但這看起來較差,例如,來自閃光的反射可能會使位於中心的背景像素顯着變亮。
刪除背景:首先在這將基於背景顏色閾值圖像,然後對此運行「打開」或「關閉」算法,然後用它作爲掩碼選擇你的服裝文章。 (打開/關閉的要點是不要去除衣服上的小背景色物品,如白色襯衫上的黑色按鈕,或者黑色衣服上的明亮反射。)
OpenCV是一個很好的工具。
這個最棘手的部分可能是在物體周圍的陰影處(例如,在白色背景上的黑色夾克在某些邊緣會產生連續的灰色陰影,以及在何處切割?),但是如果你得到這個遠,發表另一個問題。
- 1. 透明邊緣
- 2. 透明Networx邊緣標籤
- 3. 如何檢測Java中圖像的邊緣(透明背景)?
- 4. 如何測量邊緣檢測圖像邊緣的長度?
- 5. 邊緣檢測和分割
- 6. OpenCV ROI和邊緣檢測
- 7. PHP imagick檢測透明度
- 8. ImageView透明設置邊緣/邊框Android
- 9. SQLITE邊緣檢測
- 10. VHDL邊緣檢測
- 11. Canny邊緣檢測
- 12. qTip2邊緣檢測
- 13. Canny邊緣檢測的梯度方向
- 14. 如何檢測地圖容器的緯度和經度邊緣?
- 15. 使用邊緣檢測和邊界框的MATLAB對象檢測
- 16. 股利與切出邊緣,邊界和透明背景
- 17. 淡入淡出ImageView邊緣到透明
- 18. AS3 - bitmapData邊緣alpha透明問題
- 19. 紋理邊緣透明問題
- 20. Matplotlib:繪製具有不透明邊緣的透明直方圖
- 21. 檢測邊緣(連接的邊緣)並查找邊緣長度和連接的組件回轉半徑
- 22. 邊緣檢測 - 檢測不良
- 23. 內容上下邊緣的透明度漸變
- 24. 如何使用java3d透明度查看自己的邊緣
- 25. 圖像邊緣檢測和平滑?
- 26. Canny邊緣檢測和LoG差異
- 27. 線條和邊緣檢測器,opencv
- 28. OpenCV中的邊緣檢測
- 29. Openmp C++ sobel邊緣檢測
- 30. Canny邊緣檢測器C
你使用的是什麼圖像類型:8bit,16bit,monochrome,color?衣服是什麼顏色的?他們是否與背景形成對比?你說你想讓背景變得透明:告訴我們更多關於你的目標的信息,你會把衣服疊加在另一張圖片上嗎? (你有我們可以看的樣本圖片嗎?) – 2009-10-26 19:43:35
什麼是「一致」背景?這是一種顏色嗎? – Jacob 2009-10-26 19:53:50
我也忘了:你似乎有很多圖像,是所有圖像上相同顏色的背景還是背景顏色會根據圖像而改變? – 2009-10-26 20:11:16