我试图从有前景物体的图像中检测显性强度区域。我可以使用sobel算子使用x和y渐变来检测对象的边缘。但是,我很难检测到图像的主要区域。我需要图像中主要强度区域的像素值。
例如,在图像1中,背景(灰色部分)具有主要区域,而在图像2中,对象(黑色部分)具有主要区域。我想得到图像1和2中主要区域的像素值。
我完成了边缘检测,如下所示:
Mat mat2gray(const cv::Mat& src)
{
Mat dst;
normalize(src, dst, 0.0, 255.0, cv::NORM_MINMAX, CV_8U);
return dst;
}
int main(void)
{
Mat img = imread("Image.png", -1);
Mat cvsx,cvsy;
Sobel(img, cvsx, CV_32F, 1, 0);
Sobel(img, cvsy, CV_32F, 0, 1);
imshow("x", mat2gray(cvsx));
imshow("y", mat2gray(cvsy));
Mat mag;
magnitude(cvsx, cvsy, mag);
imshow("magnitude", mat2gray(mag));
waitKey();
return 0;
}
我觉得渐变幅度和渐变方向可能是可能的,但我无法弄明白。我非常感谢有关获得图像的主要强度区域的任何帮助。
更新:这是一个3级强度的示例图像。这是从深度相机获得的深度图像。