OpenCV - 计算图像的边缘强度

Posted

技术标签:

【中文标题】OpenCV - 计算图像的边缘强度【英文标题】:OpenCV - Calculating edge strength of image 【发布时间】:2014-11-20 17:57:05 【问题描述】:

我是图像处理的新手,我需要计算图像中存在的边缘强度。假设您有一张图像,并为该图像添加了模糊效果。这两个图像的边缘强度不同。我需要分别计算两个图像的 that 边缘强度。

到目前为止,我已经使用下面的代码对图像进行了精巧的边缘检测。

  Mat src1;
  src1 = imread("D.PNG", CV_LOAD_IMAGE_COLOR);
  namedWindow("Original image", CV_WINDOW_AUTOSIZE);
  imshow("Original image", src1);
  Mat gray, edge, draw;
  cvtColor(src1, gray, CV_BGR2GRAY);
  Canny(gray, edge, 50, 150, 3);
  edge.convertTo(draw, CV_8U);
  namedWindow("image", CV_WINDOW_AUTOSIZE);
  imshow("image", draw);
  waitKey(0);
  return 0;

有没有什么方法可以计算这个边缘图像的强度..?

【问题讨论】:

请定义“此边缘图像的强度”。我不知道你是在寻找大量的边缘,还是非常锋利的边缘,或者别的什么。 从这段代码你得到边缘图像。我想计算边缘的强度。这可以是该边缘图像的平均值。您可以使用锋利的边缘或大的边缘来计算平均值 听起来是个好计划。你的结果是什么? 找不到执行此操作的方法。 【参考方案1】:

mean 将为您提供图像的平均值。如果您如上所述使用Canny,您可以这样做:

Scalar pixelMean = mean(draw);

要仅获取边缘像素的平均值,您也可以使用图像作为掩码:

Scalar edgeMean = mean(draw, draw);

不幸的是,由于Canny 将所有边缘像素设置为255,您的平均值将始终为255。如果这是您正在寻找的度量,您可能需要使用Sobel(在高斯模糊之后)并计算梯度以获得相对边缘强度。

【讨论】:

以上是关于OpenCV - 计算图像的边缘强度的主要内容,如果未能解决你的问题,请参考以下文章

opencv入门之九Opencv边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器

OpenCV基础(11)基于OpenCV的边缘检测

OpenCV--边缘检测

如何使用 OpenCV 将梯度/幅度应用于图像?

基于OpenCV的图像梯度与边缘检测!

opencv的学习笔记5