2012-09-09 212 views
6

我想識別我的UIImageView(或UIImage)內的正方形/長方形。Xcode,iOS - 圖像線/形狀識別

我看了一下「Very simple image recognition on iOS」,但那不是我想要的。

目前我有一個UIImageView,它不時給予UIImage

大多數UIImage ES的具有黑色正方形/長方形這樣的: img。 但角落可能(或可能不)具有圓角邊緣。

如何識別第一個黑色方塊/長方形的尺寸? 最終結果將是調整我的UIImageView的大小,使UIImage中的第一個黑色方塊填滿屏幕。像這樣: img With iPhone

+0

你能澄清你在實踐中使用的圖像類嗎?你是否會一直使用黑色輪廓框,其他所有東西都是白色的,或者說是否會有,比方說,任意內容的框被白色的黑色邊框包圍着,或者是其他的東西? – Tommy

+2

by「square」你的意思是「矩形」?請澄清... – Felix

+0

製作漫畫查看器?你可能不得不做一些模式識別,但如果你只是在尋找這樣的分隔線,它應該不會太壞。 – TomSwift

回答

10

如果您的圖像在水平行中始終是銳利的黑色方塊,您可以使用角點檢測來識別矩形,然後挑出最左邊的四個角。我在基於Harris,Noble和Shi-Tomasi角點檢測方法的開放源代碼框架中有三種角點檢測器。

運行鍼對您的箱子一個GPUImageHarrisCornerDetectionFilter 0.4閾值和4.0靈敏度得到以下結果:

Harris corner detection results

他們有點難以看到,但紅色的十字標記出探測器發現你的盒子的角落。再次,您只需要將最左邊的四個點找到您的目標矩形,然後簡單地縮放您的圖像或視圖,以便此矩形現在填充您的視圖。

如何運行此功能檢測的示例可以在框架中的FilterShowcase或FeatureExtractionTest示例中找到。我在Signal Processing上描述了我在this answer中這樣做的過程。

+0

非常好的解決方案!從我+1。不幸的是,問題已被修改爲也包含圓角...... –

+0

感謝一個真棒框架!但是,我無法得到這個工作。我甚至嘗試了FeatureExtractionTest示例,但沒有找到任何角落。我已經在這裏發佈了自己的問題(在看到此之前)http://stackoverflow.com/questions/18914461/gpuimage-how-to-chain-filters-with-gpuimagepicture – Mikael

+0

似乎是一個iOS 7.0問題... – Mikael

-2

從我對您的問題的理解中,您需要實現Canny Edge Detection Algorithm來檢測圖像中黑色邊框的邊緣。

爲此,您應該使用現有的圖像處理框架,在下面的鏈接

使用來自Image.m文件ImageWrapper *Image::cannyEdgeExtract(float tlow, float thigh)功能。

+0

Canny邊緣檢測無法幫助您,因爲您仍然需要確定邊緣定義的邊界框。此外,它將拾取兩個邊緣:一個用於框外,另一個用於內部。脊過濾器可能會更合適,但您仍然需要從中確定框。 –

0

看來最簡單的解決辦法是:

  1. 和垂直向上的所有像素到最上面的一行(如Excel表格)
  2. 行具有最小/最大的價值是你的「間隙」

寬度可以從(2)導出。