Linux 扫描图像的ImageMagick处理

Linux 扫描图像的ImageMagick处理,linux,image-processing,imagemagick,crop,Linux,Image Processing,Imagemagick,Crop,我正在将智能手机拍摄的文档图片上传到Linux服务器。在我的Linux服务器上,我使用ImageMagick切割边缘并进行一些处理(如灰色编码),使其看起来像扫描的文档 下面是一个示例图像 我想修剪图像,以便只选择纸张,并进行进一步处理,使其看起来像扫描图像,类似于cam扫描仪所做的 注意:我希望ImageMagick工具的参数是通用的,这样我就可以使用相同的命令行选项来处理在不同光线条件下拍摄的图像 我同意@Mark。但是,我可以提供一个起点,帮助您朝着正确的方向前进: 隔离纸张: 假设纸张

我正在将智能手机拍摄的文档图片上传到Linux服务器。在我的Linux服务器上,我使用ImageMagick切割边缘并进行一些处理(如灰色编码),使其看起来像扫描的文档

下面是一个示例图像

我想修剪图像,以便只选择纸张,并进行进一步处理,使其看起来像扫描图像,类似于cam扫描仪所做的


注意:我希望ImageMagick工具的参数是通用的,这样我就可以使用相同的命令行选项来处理在不同光线条件下拍摄的图像

我同意@Mark。但是,我可以提供一个起点,帮助您朝着正确的方向前进:

隔离纸张: 假设纸张与背景形成充分对比,您可以使用以下内容:

 ## make the background transparent 
 convert 'input_image' \( -clone 0 -fill black -fuzz 10% +opaque "rgb(1,1,1)" -transparent black \) -delete 0 'transp_image'
您必须更改rgb颜色值以匹配纸张的“白色”。imagemagick中的
display
命令有一个很好的实用程序。您还可以使用
-fuzz
百分比来仅隔离纸张

删除背景:希望上面的代码能够使纸张外部的所有区域都透明,在这种情况下,您可以删除背景:

 ## trim the transparent background away
 convert 'transp_image' -trim 'isolat_image'
从那里你可以做一些更有趣的事情,比如改变视角。尝试查看imagemagick()中的
-扭曲
。虽然我不确定如何将循环中的失真应用于手动拍摄的图片,但每张图片可能需要特定的输入参数


祝你好运

这是一个非常广泛的问题,可能需要相当多的技能和努力才能提供一种方法来处理不同的照明、曝光、纸张方向、裁剪、校正和对比度控制——几乎肯定比任何人想要获得10-15分的声誉都要多:-)