OpenCV — Расчет прочности края изображения

Я новичок в обработке изображений, и мне нужно рассчитать силу краев, присутствующих в изображении. Предположим, что у вас есть изображение, и вы добавляете к нему эффект размытия. Сила края этих двух изображений различна. Мне нужно рассчитать тот сила края для обоих изображений отдельно.

До сих пор я обнаружил хитрое определение края изображения, используя код ниже.

  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 (после размытия по Гауссу) и вычислите градиенты, чтобы получить относительную силу краев.

0

Другие решения


По вопросам рекламы [email protected]