C#中的图像修改(裁剪和去偏斜)

时间:2011-04-13 21:18:06

标签: c# image-processing image-manipulation skew

使用移动设备,我在黑暗的表面上拍摄了一个平面灯光物体的照片。 (例如从报纸上剪下的优惠券)。

然后通过亮度/对比度滤镜运行图像。如果太暗,则忽略重要组件。如果它太亮了,优惠券上的书写就会丢失。

然后将该图像转换为双色调图像。任何50%或更暗的像素都会转换为黑色,其他所有像素都是白色。 (完成)

我留下了一个倾斜的双色调图像(想象一个黑色背景的较大矩形内的白色梯形)。

我需要弄清楚如何裁剪图像 - 当它在黑色背景上时比在白色背景上更容易。然后,我必须将图像去偏斜,使其成为矩形而不是梯形,同时试图保留纵横。

最终结果应该是优惠券的精美裁剪,双色调,可读图像。

1 个答案:

答案 0 :(得分:1)

要裁剪图像,您可以使用LockBits方法并扫描所有像素,以分别找到包含顶部,左侧,右侧和底部内容的第一个像素。如何使用LockBits在这里很好地描述:http://www.bobpowell.net/lockingbits.htm

假设您的图像没有旋转,并且倾斜来自相机与拍摄优惠券的桌子成一定角度,您现在应该有优惠券的倾斜图像,完全适合于裁剪位图。你也应该知道梯形的四个角落。

“Undistorting”图像并不像你想象的那么容易。但是,好人已经解决了这个问题,你可以将他们的代码移植到你自己的用途。以下是我在一段时间以前用类似案例探讨此问题的链接:

http://ryoushin.com/cmerighi/en-us/61,2007-10-29/Image_Distortion_Enhancements.aspx

如果您无法理解所发现的内容,我也会在某处存储一些代码。