我有一个屋顶的图像,覆盖了一个很大的区域!我正在分析它的故障使用分割。然而,挑战在于,有时屋顶上的一张照片没有细节,所以很难分析。所以我们把它分成几个部分,并对较小部分的图像进行分析。下面是一个示例:
因此,现在我想分析零件的故障,并更换它的单一镜头。下面是其中一个被分析的部分是什么样子的:
到目前为止,我的想法是:如果我能以某种方式将未分析的部分映射到屋顶上,我也可以用同样的信息和方法将分析的部分映射到单个镜头。
我已经能够做的特征检测和识别部分上的单一镜头,但我不确定我应该如何转换他们,以适应和替换准确的部分上的单一镜头。以下是特征检测:
我一直在考虑将较小的图像一个接一个地缝合到较大的图像上,但我担心这可能行不通。
PS:我正在使用Linux、Python3和OpenCV 3.4.0
另外,原始的单一镜头不是手动划分为不同的部分。由于它是一个热凸轮,它不可能有高分辨率的单次拍摄,所以凸轮采取不同的拍摄近距离。这些部分是单独的图像,而不是从单一的镜头裁剪。
编辑:我正在尝试另一种方法,即检测部件图像中的故障,然后将这些故障裁剪出来作为模板使用,然后尝试使用SIFT进行特征检测,将故障作为模板在一次拍摄中匹配。然而,小故障与自身以外的每件事都是匹配的:(大多数较大的故障都被检测到了,而中等的故障也不太好。)我认为这是因为图像的分辨率较低,而单镜头图片并不能在更近的镜头上复制故障,而且对于模板匹配而言,单个镜头的特征数量也较少。。
发布于 2018-07-31 19:43:31
更新答复
我很抱歉!我误解了这个问题。因此,使用您的特征映射方法,您可以在原始图片上得到一组点,这些点对应于新图片中的一组点。假设功能映射工作得很好,您可以将对应关系描述为映射:
$$P_{新点}=T_{原到新}*P_{原始} $$
其中T_{原始到新}是一个变换矩阵。如果您有这个转换矩阵,那么您可以很容易地反转它,以找到“部分”图片与原始图像之间的关系。
挑战是,您目前有一个复杂的转换矩阵!你要找的是一个旋转的,平移的,缩放的,很有可能也发生了一些偏斜。考虑到特征点的集合,我不确定找到这个矩阵的正确方法。
如果您不介意做一些手工工作,我建议您在图片上找到一组对应的线条,并使用OpenCV的透视变换为您找到这个矩阵。
旧的,不相干的答案
我有一个吻回答:
当您从“整个屋顶拍摄图像”中手动选择“第1-3部分”时,请跟踪它们的初始大小和位置。
如果提前知道,则不需要事后计算转换。首先,我建议将图像分割成四分位数,当你有这个简单的几何图形时,我建议将检测结果叠加起来。一旦成功,就可以从原始图片中处理任意大小的盒子的问题。
https://stackoverflow.com/questions/51616160
复制相似问题