2012-10-20 33 views
2

我試圖通過將以下股權應用於輸入圖像來提高我的圖像質量。通過在javacv/opencv中應用自適應閾值來提高質量?

 CvSize sz = cvSize(img.width(), img.height()); 
     IplImage gry = cvCreateImage(sz, img.depth(), 1); 
     cvCvtColor(img, gry, CV_BGR2GRAY); 
     cvAdaptiveThreshold(gry, gry, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY_INV, 5, 4); 

這是我的輸入文件

enter image description here

通過應用門檻我需要繪製在白色的所有行和所有其他區域以黑色,但在我出去放有一些缺行。那麼請有人解釋一下如何解決這個問題?

這是我申請超過門檻後出場。

enter image description here

回答

1

你應該做的侵蝕(cvErode()在OpenCV中),然後擴張(cvDilate()) 擺脫小斑點。希望這有助於

+0

非常感謝您對您的reply.Yes其真正的它可以用來刪除這些斑點,但我怎樣才能連接那些斷開的線?這是我在這裏遇到的主要問題。 – LkDev

+0

我認爲你應該blob blob(連接組件分析)和擴張,直到組件數量成爲一個。如果您不知道,請查看維基百科上的連接組件標籤。 OpenCV和Matlab具有內置的CCA功能 – mkuse

1

我希望你已經找到了答案,如果不是你....閾值之前嘗試一些高斯模糊:

Mat image = imread("mX5h6.jpg", IMREAD_GRAYSCALE); 
GaussianBlur(image, image, Size(3, 3), 0, 0); 
adaptiveThreshold(image, image, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY_INV, 5, 4); 
imshow("image", image);