Я новичок в обработке изображений, и мне нужно рассчитать силу краев, присутствующих в изображении. Предположим, что у вас есть изображение, и вы добавляете к нему эффект размытия. Сила края этих двух изображений различна. Мне нужно рассчитать тот сила края для обоих изображений отдельно.
До сих пор я обнаружил хитрое определение края изображения, используя код ниже.
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;
Есть ли способ рассчитать силу этого края изображения?
mean
даст вам среднее значение вашего изображения. Если вы используете Canny
как указано выше, вы можете сделать:
Scalar pixelMean = mean(draw);
Чтобы получить среднее значение только для краевых пикселей, вы также должны использовать изображение в качестве маски:
Scalar edgeMean = mean(draw, draw);
К сожалению, так как Canny
устанавливает все краевые пиксели в 255
, ваша середина всегда будет 255
, Если это мера, которую вы ищете, вы, вероятно, захотите использовать Sobel
(после размытия по Гауссу) и вычислите градиенты, чтобы получить относительную силу краев.