2010-12-22 125 views
0

我正在寫一個圖像處理應用程序,它根據它們的形狀識別對象。我面臨的問題是,因爲一個對象可以由一個或多個子對象組成,例如。人臉是由眼睛,鼻子和嘴組成的物體。測試對象內部和對象

應用圖像分割創建單獨的對象,但不告訴一個對象是否是另一個對象的內部。

我如何檢查對象是否包含在另一個對象中effeciently。

現在我的算法是wat我會叫8點測試,其中你選擇了8個角落的8個點,並檢查他們是否都在對象內部。如果他們在那麼你可以更肯定地說整個對象是另一個對象中......但它已得到一定的侷限性或失敗的某些地區......

也僅僅是因爲內部對象是內部另一個對象意味着我應該把他們對外部對象的一部分????

+0

「我正在寫一個圖像處理應用程序」 - 由於複雜性和特定區域的原因,這可能使您成爲專家,相比之下,大多數人都是這方面的專家...... – 2010-12-22 05:09:58

+1

@Mitch我不喜歡...還有一些非常聰明的用戶,在非常具體的領域有非常強的經驗......我見過一些。 – 2010-12-22 05:28:50

回答

3

測試一個對象是否完全位於另一個對象內的一種方法是使用poly2mask(如果它們不是二進制掩碼)將兩者轉換爲二進制掩碼,並測試一個對象的所有像素是否爲其他對象的一部分目的。

%# convert object 1 defined by points [x1,y1] into mask 
msk1 = poly2mask(x1,y1,imageSizeX,imageSizeY); 
%# do the same for object 2 
msk2 = poly2mask(x2,y2,imageSizeX,imageSizeY); 

%# check whether object 1 is fully inside object 2 
oneInsideTwo = all(msk2(msk1)); 

但是,這真的有必要嗎?眼睛應該總是接近臉部的中心,因此,8點方法應該相當強大,以確定您是否發現了眼睛是臉部的一部分,或者它是否是分割僞像。

而且,如果一個映入眼簾的是一張臉,那麼,你會認爲這是因爲那張臉的部分 - 除非你分析的是吃人的眼睛,在這種情況下,你必須測試是否圖片眼睛大致位於臉部正確位置。

總之,回答你的問題是一個很大的「取決於應用程序的詳細信息」。