图像处理算法的想法 - Opencv

时间:2016-04-13 10:54:16

标签: c++ image algorithm opencv

我正试图在粗面粉中隔离小物体(黑色物体),如下图所示。我在C ++中使用OpenCV 3.1。

我尝试了不同的方法,我发现的最好的方法如下。但结果并不像我想的那样好。 我只想在决赛中使用黑色物体。

原始图片:

Original Image of semolina

因此,我将图像转换为灰度,并应用GaussianBlur和大模糊以获得背景。

GaussianBlur(img_gray, img_inter, Size(21, 21), 0, 0);
blur(img_inter, img_blur, Size(51, 51), Point(-1,-1), 0);

背景图片:

Background Image

之后,我将背景减去原始图像:

减去图像:

Subtracted Image

打开操作后的最终图像,阈值再次打开:

结果图片:

Final Image

以下代码:

cvtColor(*img_in, img_gray, CV_BayerGB2GRAY);

GaussianBlur(img_gray, img_inter, Size(21, 21), 0, 0);

blur(img_inter, img_blur, Size(51, 51), Point(-1,-1), 0);

img = (255 - img_gray) - (255 - img_blur); // Background subtraction

morphologyEx(img, img_inter, cv::MORPH_OPEN, cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(3, 3)),Point(-1,-1), 1);
threshold(img_inter, img, 50, 255, CV_THRESH_BINARY);
morphologyEx(img, img_inter, cv::MORPH_OPEN, cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(3, 3)), Point(-1, -1), 1);

如果您有任何改善结果的想法,谢谢

0 个答案:

没有答案