2017-04-27 103 views
0

我的目標是從圖像中提取任何卡..帆布:查找卡的角落圖像

說明:

我有以下的圖像開始...

Original Image

拔出來在畫布上並施加Canny邊緣檢測,並得到這..

Image after Canny Edge Detection

我希望得到的結果應該是somethig類似於:

required output

取出存儲卡了,我需要找到卡的角落形象。

OR

的另一種方式,我在互聯網上發現的是:

  1. 遍歷所有的邊緣,並找到封閉的,那麼

  2. 找到最大的封閉邊緣和作物因此。

但我越來越無力,而試圖建立任何邏輯來實現任何方法。

這樣做是爲了獲得邊緣檢測,並且我無法繼續辦理:

var img = new Image(); 
img.src = "bcard.png"; 
img.onload = function() { 
    var canv = document.getElementById("canv"); 
    var ctx = canv.getContext("2d"); 
    canv.height = img.height; 
    canv.width = img.width; 
    ctx.drawImage(img,0,0); 
    window.canny = CannyJS.canny(canv); //included a js script to do canny edge detection 
    canny.drawOn(canv); 

}

+0

包含您嘗試過的代碼。圖像不會幫助! – Pugazh

+0

@Pugazh得到邊緣檢測後,我無法猜測任何方法去更進一步.. –

回答

1

首先,我提取從所提供的圖像紅色通道

紅色通道圖像:

enter image description here

接着我模糊它施加高斯模糊

模糊圖像:

enter image description here

最後,我進行邊緣檢測,以獲得如下。

最後的邊緣:

enter image description here

以便對農作物卡完美,你將不得不尋找唯一ONE外部輪廓。要做到這一點,你有擴張產生的圖像

膨脹圖像:

enter image description here

現在你必須要找到的輪廓。找到目前的外部輪廓。在這種情況下,只能找到一個輪廓。圍繞此輪廓繪製一個邊界矩形。

enter image description here

使用邊界矩形的座標,作物圖像:

enter image description here

(我有在Python中生成的腳本,但我看到你的腳本代碼javascript)

+1

感謝您的努力..威爾看我能用JavaScript做什麼這種方法.. –

+0

@SauravPradhan選擇適當的內核大小模糊之前找到邊緣。在這種情況下,我使用的內核大小爲5 –

+0

您可以請您分享從圖像中提取紅色通道的代碼,您在Python中使用@Jeru Luke –