Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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
Image 图像水平和垂直总和的解释_Image_Matlab_Image Processing_Plot_Projection - Fatal编程技术网

Image 图像水平和垂直总和的解释

Image 图像水平和垂直总和的解释,image,matlab,image-processing,plot,projection,Image,Matlab,Image Processing,Plot,Projection,我有一个二进制文件,它在图像的不同部分有一些文本,比如底部、顶部、中间、右中间等等 原始图像 我想重点关注的区域是以红色显示的手动绘制的区域 我计算了图像的水平和垂直总和,并绘制了它们: plot(sum(edgedImage1,1)) 有人能给我解释一下这些情节告诉我的关于我上面解释的原始图像结构的什么吗? 此外,这些绘图如何帮助我提取我刚才手动绘制的红色区域?求和操作没有什么复杂之处。简单地说,sum(edgedImage1,1)计算图像中每列的所有行的总和,这就是您正在打印的内容

我有一个二进制文件,它在图像的不同部分有一些文本,比如底部、顶部、中间、右中间等等

原始图像

我想重点关注的区域是以红色显示的手动绘制的区域

我计算了图像的水平和垂直总和,并绘制了它们:

plot(sum(edgedImage1,1))

有人能给我解释一下这些情节告诉我的关于我上面解释的原始图像结构的什么吗?
此外,这些绘图如何帮助我提取我刚才手动绘制的红色区域?

求和操作没有什么复杂之处。简单地说,
sum(edgedImage1,1)
计算图像中每列的所有行的总和,这就是您正在打印的内容。实际上,您正在计算每列所有行上所有非零值(即白色像素)的总和。图中的水平轴表示您正在观察的行和。类似地,
sum(EdgeImage,2)
计算图像每行的所有列的总和,这就是您正在打印的内容

由于文本以水平方式显示,
sum(edgeImage,1)
不会特别有用。非常有用的是
sum(EdgeImage,2)
操作。对于图像中的空白行,图像中每行的列的水平总和应为非常小的值,而对于图像中包含文本或笔划的行,总和应相当大。我所说的一个很好的例子是在你的图片底部看到的。如果在第600行和第700行之间进行查询,您会看到绘图中出现一个巨大的尖峰,因为在这些行之间有很多文本

使用此结果,确定图像中包含文本或笔划的区域的粗略方法是查找超过某个阈值的所有行。结合刚刚执行的求和操作中的模式或峰值,您可以非常轻松地定位和分离文本的每个区域


如果您决定确定有多少文本斑点,则可能需要平滑由
sum(edgedImage,2)
提供的曲线。一旦你消除了这个信号,你就会清楚地看到有5种模式对应于5行文本。

求和运算没有什么复杂的地方。简单地说,
sum(edgedImage1,1)
计算图像中每列的所有行的总和,这就是您正在打印的内容。实际上,您正在计算每列所有行上所有非零值(即白色像素)的总和。图中的水平轴表示您正在观察的行和。类似地,
sum(EdgeImage,2)
计算图像每行的所有列的总和,这就是您正在打印的内容

由于文本以水平方式显示,
sum(edgeImage,1)
不会特别有用。非常有用的是
sum(EdgeImage,2)
操作。对于图像中的空白行,图像中每行的列的水平总和应为非常小的值,而对于图像中包含文本或笔划的行,总和应相当大。我所说的一个很好的例子是在你的图片底部看到的。如果在第600行和第700行之间进行查询,您会看到绘图中出现一个巨大的尖峰,因为在这些行之间有很多文本

使用此结果,确定图像中包含文本或笔划的区域的粗略方法是查找超过某个阈值的所有行。结合刚刚执行的求和操作中的模式或峰值,您可以非常轻松地定位和分离文本的每个区域


如果您决定确定有多少文本斑点,则可能需要平滑由
sum(edgedImage,2)
提供的曲线。一旦你消除了这个信号,你会清楚地看到有5种模式对应于5行文字。

第二个图显示了每行的总和。这可以告诉您哪些行中有大量信息,哪些行中没有

通过查找矩形起点值的急剧倾斜和矩形终点值的急剧下降,可以使用此图查找矩形。在你这么做之前,我会先对数据进行低通滤波,然后看看它的导数,再找一个大的导数


您可以对第一个绘图执行相同的操作,但它更为敏感。

显示每行总和的第二个绘图。这可以告诉您哪些行中有大量信息,哪些行中没有

通过查找矩形起点值的急剧倾斜和矩形终点值的急剧下降,可以使用此图查找矩形。在你这么做之前,我会先对数据进行低通滤波,然后看看它的导数,再找一个大的导数


您可以在第一个绘图中执行相同的操作,但它更为敏感。

最后一个绘图中的最小值是文本行之间的间距

您只需获取图形并将其
y
轴与图像的
y
轴对齐,然后对每列像素数太少的区域设置阈值。这些区域(红色)是文本行之间的间隙或图像上的任何内容:

现在,如果需要,应该对图像进行反扭曲。如果偏移太大,则需要在轴求和之前应用反偏移

在此之后,分别为每个非红色区域绘制
x
轴求和图,并以相同的方式检测字符/单词之间的间隙,以获得用于OCR的每个字符的面积。这一次,您将对齐到
x
axi
plot(sum(edgedImage1,2))