Повысить качество, применяя адаптивный порог в 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);
Это мой входной файл
применяя порог, мне нужно нарисовать все линии белым, а все остальные области черным, но в моем выходе есть некоторые пропущенные линии. Так, пожалуйста, кто-нибудь может объяснить, как преодолеть эту проблему?
Это мой выход после применения вышеуказанного порога.
2 ответа
Вы должны сделать эрозию (cvErode() в opencv), а затем расширить (cvDlate()), чтобы избавиться от мелких пятен. Надеюсь это поможет
Я надеюсь, что вы уже нашли ответ, если нет.... Попробуйте немного размытия по Гауссу перед порогом:
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);