图像处理工具ImageMagick - 灰度化和二值化

ImageMagick基本介绍

ImageMagick是一款可以创建,编辑,合成,或转换图像的命令行工具。支持200多种的图像格式,常见的如PNG,JPEG,GIF,HEIC,TIFF,DPX,EXR,WebP,Postscript,PDF和SVG等。

同时也可以使用ImageMagick对图像调整大小,翻转,镜像,旋转,扭曲,剪切和变换图像,调整图像颜色,应用各种特殊效果,或绘制文本,线条,多边形,椭圆和Bézier曲线等。

在图像预处理中,我们可以通过ImageMagick简单快速的实现灰度化与二值化。

背景知识 - 图像像素点

在开始之前我们需要了解一下像素的知识。

对于一个像素点,我们会用RGB三个分量(R:Red,G:Green,B:Blue),即红、绿、蓝三原色来表示真彩色。

R分量,G分量,B分量的取值范围均为0~255。下面是常见的颜色的RGB值:

颜色名称 R G B
黑色 0 0 0
蓝色 0 0 255
绿色 0 255 0
红色 255 0 0
黄色 255 255 0
白色 255 255 255

大家应该也了解在CSS的样式表中的颜色也是通过这种方法来表达的,如黑色#000000, 白色是#FFFFFF

我们以兔子先生的首页的图片为例子:

我们查看这张图片的详细信息,尺寸是400 * 400 的像素矩阵。也就是总共有160000个像素点,每个像素点是一个(R, G, B)的三维向量。

注意:

可能会有同学对dpi也有疑问,它是每英寸的像素点,英寸是长度单位,一英寸差不都多是2.5cm,我们在这里不做更多展开。

ImageMagick安装

在Ubuntu环境下,我们可以直接通过apt-get来进行安装

sudo apt-get install imagemagick

灰度化

什么叫图片的灰度化呢?灰度化就是让像素点矩阵中的每一个像素点都满足下面的关系:R=G=B 此时的这个值叫做灰度值。

这样做的好处是了减小图像原始数据量,便于后续处理时计算量更少,因为图像处理不一定需要对彩色图像的RGB三个分量都进行处理。

换句话说,将上述的(R, G, B)三维向量,可以当做一维向量来处理。

我们可以通过如下命令将图片灰度化:

convert in.jpg -type Grayscale gray.jpg

经过灰度化处理后,图像如下:

也可以选择指定灰度化的算法:

convert in.jpg -grayscale Rec709Luma gray.jpg

附算法名称和实现方式:

算法名 实现
Rec601Luma 0.298839R' + 0.586811G'+ 0.114350B'
Rec601Luminance 0.298839R + 0.586811G + 0.114350B
Rec709Luma 0.212656R' + 0.715158G' + 0.072186B'
Rec709Luminance 0.212656R + 0.715158G + 0.072186B
Brightness max(R', G', B')
Lightness (min(R', G', B') + max(R', G', B')) / 2.0
Average (R' + G' + B') / 3.0
MS (R'^2 + G'^2 + B'^2) / 3.0
RMS sqrt( (R'^2 + G'^2 + B'^2) / 3.0 )

二值化

在经过灰度化处理后,已经显著减小了图像的数据信息,但是还不过,我们需要二值化进一步处理。

什么叫图像的二值化?二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色),也就是让整个图像呈现只有黑和白的效果。

在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。

在灰度化的图像中灰度值的范围为0~255,在二值化后的图像中的灰度值范围是0或者255。

我们可以通过如下命令,将原始图像直接二值化:

convert in.jpg -monochrome out.jpg

效果如下:

当然如果需要阈值可调整,可以在灰度化后,再二值化:

convert gray.jpg -threshold 55%  out.jpg

我们分别选择了20%, 50%, 80%三个阈值效果如下:

20%的效果:

50%的效果:

80%的效果:

参考资料


相关主题:
相关推荐
  1. 警方通报:武汉男子持刀至五死一伤,嫌犯已跳桥
  2. 成都三十八中
  3. 江西省进贤县第二中学(进贤二中)
  4. 湖北将发放消费券 - 武汉新鲜事
  5. 狐狸名叫“老博士”
  6. 成都青白江华严小学
  7. 武汉推出越王勾践剑交通卡
  8. 房山区南尚乐中学
  9. 北京丰台区黄土岗中学
  10. Python公开课 - 爬虫介绍
  11. 武汉女子网上做兼职被骗六十五万
  12. 济南市七贤村小学
  13. 百名网媒总编辑登上知音号欣赏武汉夜色
  14. 温州第八中学
  15. 天津市和平区世纪星双语幼儿园 - 天津幼儿园黄页
  16. 远方传来的雷声
  17. 爱奇艺上个人如何发布知识付费视频
  18. 宝宝吃母乳拉肚子胀肚怎么办 - 育儿经验
  19. 旅客与司机
  20. 剪掉坏脾气
  21. 广州市越秀区建设大马路幼儿园 - 广州幼儿园黄页
  22. 陕西省西安市高陵县榆楚镇小博士幼儿园 - 西安幼儿园黄页
  23. 狐狸和天鹅姑娘
  24. 西南大学附属中学(西大附中)
  25. 珠海市斗门区桅夹小学
  26. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  27. 小蜗牛靠自己
  28. 重庆万盛区实验学校
  29. 一文看懂字符编码 - Unicode、UTF8、GBK、GB2312、ANSI和ASCII
  30. 生活不易,酒在远方
  31. python3.5升级python3.6后出现 No module named apt_pkg 异常
  32. 苏州市苏锦第一小学(苏锦一小)
  33. Python公开课 - Appium安装
  34. 小黑鹅智斗恶狼
  35. Linux删除文件磁盘空间不释放及常见问题的解决思路
  36. Python公开课 - PDB调试处理
  37. 易中天给英雄武汉的一首诗 - 武汉新鲜事
  38. 失之东隅收之桑榆
  39. 厦门六中初中部
  40. 再爬一回
  41. 武汉一女子七天被骗220万
  42. 太原市清徐县宏乐南幼儿园 - 太原幼儿园黄页
  43. 脱单!武汉的相亲角在哪你知道吗?
  44. 都江堰市第四中学
  45. 南宁市邕宁区蒲庙镇州同小学
  46. SEO干货 - 文章如何进行伪原创
  47. 青岛市崂山区南宅小学
  48. 义鹊怜孤
  49. 奥迪客户不满加价,被武汉4S店销售群殴
  50. TCP报头格式的是什么?
  51. 合肥市红星路小学
  52. 城阳区礼德小学
  53. 徐州市侯集中学
  54. 云南省昆明市富民县贝蕾幼儿园 - 昆明市幼儿园黄页
  55. 浙江师范大学附属中学(金华二中)
  56. 英德市第一小学
  57. 贵州省贵阳市乌当区观山湖区可儿幼儿园 - 贵阳市幼儿园黄页
  58. 桂林市七星区小太阳中英文幼儿园 - 桂林幼儿园黄页
  59. 遵义市红花岗区官井社区金铭艺术幼儿园 - 遵义市幼儿园黄页
  60. 昆明市官渡区百灵鸟艺术幼儿园 - 昆明市幼儿园黄页