Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用openCV检测颜色均匀的斑点_Opencv_Computer Vision - Fatal编程技术网

用openCV检测颜色均匀的斑点

用openCV检测颜色均匀的斑点,opencv,computer-vision,Opencv,Computer Vision,我正在开发一个用于遥感检测分割田地的程序(即,每张图像中有一种以上的颜色/田地类型,其中图像对应于一个农民拥有的土地),并一直试图通过读取图像并使用聚类算法对其进行后验来找到解决方案,然后分析呈现的颜色和形状,尝试对每个图像进行“评分”,并确定是否存在多种类型的场。我的程序运行得相当好,尽管仍然有相当多的明显分裂,它无法检测到 到目前为止,我一直使用C++中的标准库来做这件事,但现在我认为我应该使用OpenCV或者什么,我想知道从哪种技术开始。我看到有一些图像分割和斑点检测算法,但我不确定它们是

我正在开发一个用于遥感检测分割田地的程序(即,每张图像中有一种以上的颜色/田地类型,其中图像对应于一个农民拥有的土地),并一直试图通过读取图像并使用聚类算法对其进行后验来找到解决方案,然后分析呈现的颜色和形状,尝试对每个图像进行“评分”,并确定是否存在多种类型的场。我的程序运行得相当好,尽管仍然有相当多的明显分裂,它无法检测到

到目前为止,我一直使用C++中的标准库来做这件事,但现在我认为我应该使用OpenCV或者什么,我想知道从哪种技术开始。我看到有一些图像分割和斑点检测算法,但我不确定它们是否适用,因为场之间的边界往往模糊或对比度低。以下是一些示例图像,我希望我的程序将其检测为“分割”:

(真彩色陆地卫星)


有没有什么想法可以让我用不同的方式来解决这个问题?谢谢

尝试在
MserFeatureDetector
中实现

最初的算法是针对灰度图片的,我对它的彩色版本没有很好的经验,因此尝试对原始帧进行一些预处理,以根据我们的需要生成灰度。

1)转换为HSV并拍摄H或拍摄灰度形式。如果图像是高分辨率的,则应用中值滤波器平滑场:P

2) 提取直方图并找到所有峰值。这些峰值表示不同颜色的场

3) (A)现在您可以围绕这些峰值使用简单的阈值,然后找到梯形或类似形状的精明边缘

--或--

(B) 查找峰值周围的canny边,即最大值为x的峰值,查找范围为(x-dx)到(x+dx)的边,其中dx是要通过实验查找的小值

4) 现在,您可以提取不同级别/峰值的轮廓数


我没有添加代码,因为没有指定语言,而且所有这些结构都可以在OpenCV中使用。学习很有趣。请随时进一步询问。愉快的编码。

不知怎的,我不明白你所说的“分割”是什么意思对不起,已编辑,下面是一些未分割图像的示例: