3

我试图通过将以下股权应用于输入图像来提高我的图像质量。

        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);

这是我的输入文件

在此处输入图像描述

通过应用阈值,我需要将所有线条绘制为白色,将所有其他区域绘制为黑色,但在我的输出中有一些缺失的线条。那么请有人解释一下如何克服这个问题?

这是我应用高于阈值后的输出。

在此处输入图像描述

4

2 回答 2

2

你应该做腐蚀(opencv中的cvErode())然后膨胀(cvDilate())以去除小斑点。希望这可以帮助

于 2012-10-22T11:05:14.613 回答
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);
于 2013-05-31T16:39:16.963 回答