我正在尝试一起扫描一些图片(个人3x4厘米图像),然后将它们拆分为单独的图像。关于扫描的第一步已经完成,但是关于第二步(边缘检测和分割),我遇到了一些问题。
1-通常,当他们扫描图片时,有些图片会旋转一些角度,这会使我无法获得笔直的边缘。
2-如何消除大噪音? (想象一下,当他们扫描这些图片时,他们在其后放了一张纸。有时,纸张在扫描的图片中形成了一些边缘...我怎么能理解它不是我要寻找的边缘?)
这是一个示例图像:
最佳答案
扫描中的样本图像均为矩形,并且大小均大致相同。有多种技术可以找到图像中的矩形(甚至可以完全任意旋转),但我将从更基础的技术开始。
即使背景嘈杂,也可以使用粗线拟合来查找图像中的线。从霍夫线拟合中,您可以找到相交点,并且可以将这些相交点与通过角点检测找到的点进行比较(请参见下面的3)。
线上的边缘点具有垂直于那些线的渐变。搜索边缘点时,您可以选择与其他边缘点之间的距离大约为L或W的边缘点,这些边缘点在平行方向上具有渐变,其中L和W是图像的已知长度和宽度。
角检测器可以帮助识别小矩形图像的角。您知道图片的长度和宽度,这应该有助于您接受/拒绝角落。
如果您想看中(我不建议这样做),那么一种简单的归一化互相关技术可以检测到较大图像中“模板”子图像的所有实例。该技术有点粗糙,但是如果没有太多旋转,它可以正常工作。由于子图像具有边界清晰的已知形状和(大概)大小一致的边界,因此仅找到边缘而不是尝试匹配图像内容会更加容易。
一旦确定了每个矩形子图像的位置和方向,则简单的旋转变换+插值就可以生成每个图像的“右侧向上”版本。使用扫描仪时,透视变形不会有问题,但是如果将来在某个角度拍摄照片(?),则仿射变换可以将变形的梯形图像映射为矩形图像。
霍夫变换
http://en.wikipedia.org/wiki/Hough_transform
拐角检测
http://en.wikipedia.org/wiki/Corner_detection
对于应该对您的应用程序足够有效的简单边缘检测,请参阅Wikipedia上“边缘检测”文章中的“其他一阶方法”部分。该技术易于理解且易于实现。
http://en.wikipedia.org/wiki/Edge_detection
祝您好运,新年快乐!
关于c# - 如何纠正扫描错误,例如旋转?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8691773/