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
C# 使用Open CV检测对象缺陷_C#_Opencv_Image Processing_Emgucv - Fatal编程技术网

C# 使用Open CV检测对象缺陷

C# 使用Open CV检测对象缺陷,c#,opencv,image-processing,emgucv,C#,Opencv,Image Processing,Emgucv,我尝试识别对象上的更改。因此,我在使用该对象前后都会拍照。目前,我正在处理两张照片的绝对差异,并拍摄结果差异图像的轮廓。只要对象像之前的图像一样被完美地定位和捕捉,这就可以很好地工作。只是位置上的细微差别使我的方法毫无用处 有人对OpenCV或EmguCV有不同的解决方案吗?我在考虑检查一个相邻像素是否相同,那么应该没有检测到任何变化,但我不知道现有的性能算法 示例图像(图片与我的用例不匹配,但它们应该有助于说明我的问题): 是的,有很多方法可以做到这一点。我喜欢以下几点: 直方图匹配。获取前

我尝试识别对象上的更改。因此,我在使用该对象前后都会拍照。目前,我正在处理两张照片的绝对差异,并拍摄结果差异图像的轮廓。只要对象像之前的图像一样被完美地定位和捕捉,这就可以很好地工作。只是位置上的细微差别使我的方法毫无用处

有人对OpenCV或EmguCV有不同的解决方案吗?我在考虑检查一个相邻像素是否相同,那么应该没有检测到任何变化,但我不知道现有的性能算法

示例图像(图片与我的用例不匹配,但它们应该有助于说明我的问题):
是的,有很多方法可以做到这一点。我喜欢以下几点:

  • 直方图匹配。获取前后直方图并检查差异。对光线变化敏感。非常好的方法,如果你在一个控制照明设置

  • 相关性匹配。如果使用MatchTemplate,则可以获得匹配的“质量”。这可以降低对光的敏感度。但对两幅图像之间的旋转变化很敏感


尝试实现一些,让我们看看您的代码。

谢谢您的回答。我忘了提到我想强调差异所在的领域。你的两种方法只能告诉我,两者之间存在差异,而不是在哪里。我说的对吗?我在10x10块的数组上使用了直方图匹配。在这里你可以告诉巫婆细胞受到影响。相同的块方法可用于相关匹配。如果你的区块太小,我不认为你会得到一个稳定的系统。好吧,我想我会认为我们离它越来越近了。但这不是和我使用的方法一样的问题吗。一旦对象稍微移动,它将发现一个差异,因为例如,对象的一部分将在与以前不同的块中“可见”。因此,块的直方图会有所不同,尽管对象不会发生变化,但如果将它们组合在一起,则不会发生变化。模板匹配以找到对象(旋转和平移),然后将10x10块放在顶部(旋转和平移)。您好,您可以添加一些有关您希望发生的“更改”类型的详细信息吗?着色?尺寸?地方您的图像是否总是从与对象完全相同的位置拍摄?环境光是恒定的吗?@GeorgeKerwood我想检测我的物体是否受损以及受损的部位。因此,我拍摄了对象的参考图片,然后是后续图片。我的照片总是从同一个位置拍摄的,但我认识到,几乎不可能在图像之后再复制一个像素级的精确图像。环境照明是恒定的。好吧,这是一种自动化的视觉检测应用程序?也许如果你能包括一些示例图像,我会看看解决方案。@GeorgeKerwood不幸的是,我不能包括一些示例图像。我会试着举一些我可以给你看的例子。但我想不会在周一之前。明白了,如果应用程序是保密的,也许试着提供一些假的例子?一些伪造的图像,你认为表现出类似的差异。