我正在尝试创建仅对图像的某些部分(非矩形)应用仿射变换的应用。

http://s29.postimg.org/k45fwbmsn/Untitled.png

是否有任何方法可以仅变换图像的选定(可见)部分?

最佳答案

我确信您描述的整体转换(仅在图像的一部分上)不是仿射的。因此,这不像对某些 vector 应用矩阵乘法那样容易。

但是,当然,有一些方法可以定义检测黑色矩形并将仿射变换应用于检测到的矩形坐标的算法。使用变换后的坐标,您可以绘制一个新的四边形。注意:进行仿射变换后,不再需要是矩形。

顺便说一句。你在矛盾自己:







我建议您澄清关于您的输入和预期输出的以下几点:

  • 您想要哪个矛盾的转换:仅矩形或除矩形外的所有东西?
  • 是二进制的黑白图像,灰度图像还是彩色图像?这是一个简单到复杂输入的问题,对算法有相当大的影响。
  • 图像是否无噪声,即它是纯黑色还是各种真正的深色?对于纯黑色,您可能可以应用简单的启发式方法来检测矩形。如果是嘈杂的图像,则需要考虑图像滤镜/改进和色彩空间过渡。
  • 矩形是图像中唯一的“黑色”区域吗?
  • 矩形是否平行于x和y轴?同样,这是简单的启发式与模式识别。
  • 是否知道矩形的数量?多个矩形是否彼此相关(大小,比例,平行)?
  • 在边框上或通过移动/缩小矩形显示的图像部分会发生什么?

  • 当您在问题中提供所需的信息时,我将编辑答案。

    关于opencv - 图像非矩形部分的仿射变换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20246863/

    10-16 02:20