2014-11-20 282 views
1

我是图像处理新手,需要计算图像边缘的强度。假设你有一个图像,并为该图像添加模糊效果。这两幅图像的边缘强度不同。我需要分别计算两个图像的边缘强度。OpenCV - 计算图像的边缘强度

到目前为止,我使用下面的代码得到了canny边缘检测的图像。

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

请定义“此边缘图像的强度”。我不知道你是否在寻找大量的边缘或非常锋利的边缘或其他东西。 – beaker 2014-11-20 19:15:00

+0

从这个代码你得到边缘image.i想要计算边缘的强度。这可以是该边缘图像的平均值。您可以使用锐利的边缘或较大的no边缘来计算平均值 – Sml 2014-11-21 05:12:15

+0

听起来像是一个很好的计划。你的结果是什么? – beaker 2014-11-21 16:52:09

回答

0

mean会给你的图像的平均值。如果您使用Canny如上,你可以这样做:

Scalar pixelMean = mean(draw); 

,仅保留边缘像素的均值,你可以使用图像作为模板及:

Scalar edgeMean = mean(draw, draw); 

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