图像的子图像查找和替换

时间:2010-11-01 18:07:49

标签: algorithm image language-agnostic image-processing

如何在图像中检测已知图像或图案,以便我可以用自己的文本替换它?

输入选项1(分别检测aaa和bbb):

aaa and bbb are 'slots' where I will place my text

输入选项2(分别检测红色值和蓝色值): Here I use colored rectangles to mark the spaces to fill in

输出:

what results from the replacement

1 个答案:

答案 0 :(得分:3)

正在运行代码

我将使用您的选项2向您展示Mathematica中运行的代码和结果。

首先我们阅读图片

 m = Import@"C:\\imagereplace.png"  

然后我们将通道RGB

分开
 ColorSeparate[m]

获取

alt text

接下来我们correlate红色通道图像(右边的那个)带有一个Box矩阵,只保留矩形。并将结果转换为B& W图像。

Binarize@ImageCorrelate[m1[[3]], BoxMatrix[3]] ;

获取全尺寸图像但仅包含黑色矩形。

现在我们找到矩形的边缘(只是一个循环)。

获得矩形的大小和坐标,我们创建一个与检测到的大小相对应的文本的光栅图像:

r1 = Binarize@Rasterize["My Text", RasterSize -> {jmax-jmin + 1, imax-imin + 1}, 
                                    ImageSize -> {jmax-jmin + 1, imax- imin + 1}]

alt text

现在我们用新的数据块替换数据块。获得:

alt text

我不会做蓝色频道,因为它是一样的。

HTH !!

注意:图像相关是唯一使用的技巧。其余的是照常编码。 Here您可以找到有关相关性的基础知识。