java opencv 图像质量,实时图像处理:HSV图像中的噪声(openCV)

我正在做一个具有很高精度的实时形状和颜色分类系统 . 看起来我的预处理阶段不够好,结果不如我预期的那么准确 . 这是我正在做的事情:

从相机中获取数据可以裁剪它以获得ROI .

将ROI图像从RGB转换为HSV空间 .

使用中值滤波器来降低HSV图像中的噪声 .

阈值图像

使用扩张和侵蚀来移除图像中的小孔和小物体

使用findContours和approxPolyDP检测方形对象 .

这是我的预处理阶段:

image_cv = cv::cvarrToMat(image_camera);

Mat cropped = image_cv(cv::Rect(0, 190, 640, 110));

imshow("origin", cropped);

Mat croppedCon = CropConveyor(cropped);

cv::cvtColor(croppedCon, croppedCon, CV_RGB2HSV);

medianBlur(croppedCon, croppedCon, 3);

cv::Mat binRect;

cv::inRange(croppedCon, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), binRect);

这是检测方块的代码:

vector> contours;

findContours(binarizedIm, contours, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);

vector approx;

for (size_t i = 0; i < contours.size(); i++)

{

//double arclength = arcLength(Mat(contours[i]), true);

approxPolyDP(Mat(contours[i]), approx, 3.245 , true); //0.04 for wood

if (approx.size() != 4) continue;

if (isContourConvex(Mat(approx)) && contourArea(Mat(approx)) > 250)

{

double MaxCos = 0;

for (int j = 2; j < 5; j++)

{

double cos = angle(approx[j % 4], approx[j - 1], approx[j - 2]);

MaxCos = MAX(cos, MaxCos);

}

if (MaxCos < 0.2)

squares.push_back(approx);

}

}

我认为HSV Image中的噪音是主要原因 . 这是一些说明我的问题的图像 . 我在HSV图像中看到了很多噪音,这就是为什么我使用媒体滤镜来减少噪音但保留边缘的原因我认为边缘信息在使用findContours函数时非常重要 . HSV and HSV in separate channels我的问题是:

HSV图像中的噪点是多少,请参考上图,如何提高图像的质量?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值