Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Javascript 查找页面中的文本行(有限的图像处理资源)_Javascript_Image Processing_Statistics_Computer Vision_Ocr - Fatal编程技术网

Javascript 查找页面中的文本行(有限的图像处理资源)

Javascript 查找页面中的文本行(有限的图像处理资源),javascript,image-processing,statistics,computer-vision,ocr,Javascript,Image Processing,Statistics,Computer Vision,Ocr,我想在一页文本中找到文本行(就像从一本书中) 示例图像: 其中一个问题是我想在Javascript中实现这一点,这是我发现的最好的计算机视觉库: 因此,我仅限于在JSFeat(或另一个JS库)中实现的算法。 我想在页面上进行特征检测,然后对绘制的点进行统计以找到线条。我不确定这是个好主意,也不确定如何做到这一点 例如,这是应用于该图像时FAST的输出。 无论使用何种字体,它都应该可以工作。此外,轻微的旋转公差会更好 非常感谢您的帮助 我的方法是计算每个水平扫描线上垂直边的数量。每个字母将产

我想在一页文本中找到文本行(就像从一本书中)

示例图像:

其中一个问题是我想在Javascript中实现这一点,这是我发现的最好的计算机视觉库:

因此,我仅限于在JSFeat(或另一个JS库)中实现的算法。

我想在页面上进行特征检测,然后对绘制的点进行统计以找到线条。我不确定这是个好主意,也不确定如何做到这一点

例如,这是应用于该图像时FAST的输出。

无论使用何种字体,它都应该可以工作。此外,轻微的旋转公差会更好


非常感谢您的帮助

我的方法是计算每个水平扫描线上垂直边的数量。每个字母将产生两条或多条边

首先,使用sobel运算符计算x导数:

现在我们有正边和负边,但我们想把它们都算为正边。所以取绝对值:

现在计算每条线上的边。这可以通过将像素相加来实现,或者简单地将图像缩放到1px的宽度,保持高度不变。为了便于查看,我绘制了结果:

现在,您需要以某种方式对该结果设置阈值,或者在1px宽度图像上运行模糊后找到最大值。如果字体大小和每行的字母保持大致相同,这很容易


您可能希望重新运行原始图像的不同旋转,然后使用对比度最高的结果。

图像中没有书籍边框,没有桌子或咖啡杯的任何部分,没有空白,没有不均匀的照明?您只想检测文本吗?你现在不想“读”它吗?通常,您会检测到一些候选对象(例如,可以找到许多边缘的区域或其他类似于“笔划宽度”分析的区域),然后使用某种OCR库验证它是否为文本,这将导致文本“读取”最后…为什么这个问题被标记为opencv?您是如何绘制结果的?使用matplotlib、
plot(img.sum(axis=1))
或类似的方法,我还为sobel使用了opencv Python绑定。在
ipython-pylab
中,所有这些都可以用Python中的大约4行代码来完成,我还没有保存代码。