我有两个图像:
我想测量呈现文本边框的直线度/平滑度。
第一张图像完美地呈现为直线,因此应采用1
进行质量测量。另一方面,第二个图像呈现了许多变化曲线(某种程度上是粗糙的),这就是为什么它应具有比1
少的质量度量的原因。如何使用图像处理或任何Python函数或任何其他语言编写的函数来测量它?
澄清:
有些字体样式本来是用笔触绘制的,但也有些字体样式像草书字体样式一样平滑地呈现。我真正要追求的是通过提供质量度量来区分字符的文本边框表面粗糙度。
我想测量图像中文本边框的笔直/平滑程度。
相反,也可以说我想测量图像中文本边框的粗糙程度。
最佳答案
我不知道任何python函数,但我会:
1)使用potrace
跟踪边缘并将其转换为贝塞尔曲线。这是Vizualization:
2)然后,我们放大到P
的顶部,例如:
您在垂直于曲线的方向上绘制有限长度的线(例如100像素)。您可以在那条线上绘制颜色强度(可以转换为HSI或HSV并使用这些 channel 之一,也可以转换为灰度并直接获取像素值):
3)然后计算导数的标准偏差。小标准偏差表示边缘锐利,大标准偏差表示边缘模糊。对于完美的边缘,标准偏差将为零。
4)现在,对于您画出一条垂直线的每个边缘,您现在都有一个“平滑度”值。然后,可以根据需要平均每个边缘,每个字母,每个单词或每个图像的所有平滑度值。同样,绘制的垂直线越多,平滑度值越准确,但计算量越大。
关于python - 测量图像中文本边框的直/平滑度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60686144/