2016-08-22 62 views
0

我試圖去噪圖像,然後提取包含手寫線的圖像的骨架。我希望這條線是連續而堅實的,但是我使用的方法沒有做到這一點,而且速度相對較慢。這裏的原始圖像: Original Image清潔opencv中的掃描圖像

Morphed 在經過變形的圖像,你可以在右下角看到一個小島。

上面的細化圖像顯示線條在結尾附近斷開。

任何其他的方法來達到預期的效果?

我的代碼如下所示:

int morph_elem = 2; 
int morph_size = 10; 
int morph_operator = 0; 

Mat origImage = imread(origImgPath, CV_LOAD_IMAGE_COLOR); 
medianBlur(origImage, origImage, 3); 
cvtColor(origImage, origImage, COLOR_RGB2GRAY); 
threshold(origImage, origImage, 0, 255, THRESH_OTSU); 

Mat element = getStructuringElement(morph_elem, Size(2 * morph_size + 1, 2 * morph_size + 1), cv::Point(morph_size, morph_size)); 

morphologyEx(origImage, origImage, MORPH_OPEN, element); 
thin(origImage, true, true, true); 
+2

在二值圖像(閾值之後)你可以'findContour's,並刪除小的例如,使用'contourArea' – Miki

回答

1

減少線路割捨嘗試使用adaptiveThreshold,玩的方法和大小,看看有什麼效果最好。 要刪除小島,只需執行findContours,然後使用drawContourscolor=(255,255,255)thickness=-1屏蔽掉不需要的規格,然後用wantedContours = [x for x in contours if contourArea(x) < 50]之類的東西對其進行篩選。