通过在javacv / opencv中应用自适应阈值来提高质量?

时间:2012-10-20 06:34:37

标签: image-processing javacv threshold

我尝试通过对输入图像应用以下共享来提高图像质量。

        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

2 个答案:

答案 0 :(得分:2)

你应该做侵蚀(opencv中的cvErode())然后扩张(cvDilate()) 摆脱小斑点。希望这有帮助

答案 1 :(得分: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);