Image processing 使用openCV进行图像处理,查找瓶子形状中的缺陷 我用图像处理、OpenCV、C++来检查瓶子的形状。我对openCV非常陌生。如果有人能给我一个正确的方向来实现这一目标,那将是一个很大的帮助。如何用OpenCV和C++来检测瓶子形状的缺陷。我将瓶子图像作为系统的输入。当一个变形的瓶子被输入时,系统应该检测到它

Image processing 使用openCV进行图像处理,查找瓶子形状中的缺陷 我用图像处理、OpenCV、C++来检查瓶子的形状。我对openCV非常陌生。如果有人能给我一个正确的方向来实现这一目标,那将是一个很大的帮助。如何用OpenCV和C++来检测瓶子形状的缺陷。我将瓶子图像作为系统的输入。当一个变形的瓶子被输入时,系统应该检测到它,image-processing,Image Processing,缺陷瓶图像: 良好的瓶子形象:基本方法: 您可以提取边缘,然后注册这两个图像。在openCV中,您将为此获得两个过滤器 完美的方法: 您可以使用统计形状建模算法,我不确定它是否存在于OPenCV中。 获取感兴趣区域(ROI)并找到轮廓 寻找凸形 查找凸性缺陷 对参考ROI和缺陷ROI都执行此操作,然后进行比较 比较并不简单,因为您可能需要在两个轮廓的区域之间建立一些对应关系(可能是您可以使用网格并将其单元用作ROI,现在单个图像有许多ROI,以解决对应关系的复杂性) 红色的投资回报率: 基于

缺陷瓶图像:

良好的瓶子形象:

基本方法: 您可以提取边缘,然后注册这两个图像。在openCV中,您将为此获得两个过滤器

完美的方法: 您可以使用统计形状建模算法,我不确定它是否存在于OPenCV中。

  • 获取感兴趣区域(ROI)并找到轮廓
  • 寻找凸形
  • 查找凸性缺陷
  • 对参考ROI和缺陷ROI都执行此操作,然后进行比较
比较并不简单,因为您可能需要在两个轮廓的区域之间建立一些对应关系(可能是您可以使用网格并将其单元用作ROI,现在单个图像有许多ROI,以解决对应关系的复杂性)

红色的投资回报率:

基于网格的方法(多ROI):


您可以尝试opencv模板匹配功能。来自opencv文档: 模板匹配是一种查找与模板图像(面片)匹配(相似)的图像区域的技术。 它实现了一种滑动窗口方案,将我们想要找到的模板图像滑动到源图像上,并计算存储在结果矩阵中的相似性度量。 在结果矩阵中,最暗/最亮的位置表示最高匹配(根据所采用的模板匹配算法),它标记模板的最佳匹配位置。使用结果矩阵上的minMaxLoc函数可以找到最亮的位置。

matchTemplate方法的签名如下:
matchTemplate(图像、模板、结果、匹配方法)//匹配模板
规格化(结果,结果,0,1,NORM_MINMAX,-1,Mat())//使结果正常化
双米瓦尔;双最大值;明洛克点;maxLoc点;点匹配;
minMaxLoc(result,&minVal,&maxVal,&minLoc,&maxLoc,Mat())//查找结果中的最小值和最大值

OpenCV提供了几种不同的匹配算法,例如查找强度的归一化平方差(CV_TM_SQDIFF_NORMED)。对于使用CV_TM_SQDIFF_NORMED获得的结果矩阵,最低值对应于最佳匹配。对于其他方法,如归一化互相关(CV_TM_CCORR_NORMED),最高值对应于最佳匹配 在您的情况下,可以使用与模板图像偏差的公差值对结果矩阵进行阈值设置,如果阈值设置的结果是空垫,则可以确定瓶子有缺陷。您可能需要进行一些实验,以找到合适的阈值。如果想要精确匹配,必须在结果矩阵中查找0/1(根据方法)。 您可以找到有关opencv模板匹配的更多信息。
希望这能有所帮助。

如果你能帮我,我愿意支付。请让我知道。我希望在我的最终项目中尽快完成这项工作。我在尝试这种方法。但是我没能达到目标。所以如果你有兴趣,请告诉我。