您的位置:首页 > 其它

图像处理(二)

2015-11-24 17:20 218 查看
话前:忙了好久的公司项目,终于竣工,并且稳定的可用,终于有闲暇时间搞搞自己喜欢的图像处理了。

不是电信工程专业出来的,表示学习信号处理还是有点难度~

我理解的图片是一个width * hight 的矩阵,矩阵中每个值表示一个RGB像素点,图片处理其实就是对这个width * hight的矩阵进行一系列个运算,最终达到自己想要的效果。

有了这个先决条件之后,最少理解一些算法就感觉很容易了。(程序猿果然更加喜欢量化后的东西)

总结一下前面那个图像处理中的提到的模糊,灰度化算法。模糊按我理解就是对width * hight的矩阵进行一个 9*9(也可以是其他的规格,只是我感觉这个很科学的样子)小规模的加权求平均值,让处于核心的那个值不那么凸显,从而达到模糊的效果。而对图像的灰度化则是对width * hight每一个值进行拆分,前面也说了,每个像素点是一个无符号32位整数的形式存储,存储的形式是AAAAAAAABBBBBBBBGGGGGGGGRRRRRRRR,把R,G,B都提取出来,然后或做一个(R+G+B)/
3,或者(0.229*R + 0.587 * G + 0.114 * B) / 3的操作,然后再重新恒合成一个新的RGB值,替换原来的值就好了。

既然是二,就不能只处于前面那种简单的处理,我又新学了边界识别,和色子作画。

先说说边界识别吧。先看看处理后的结果。

原图:依然帅气的霆锋(希望不会被打)

,做边界识别后


处理后的是我放大之后的效果。有了这两张图的对比,边界识别一下子概念就出来了,就是为了将图片中的所有边界高亮显示出来,将其他不重要的内容暗色显示。不要以为这只是玩,其实这个很有用的,最明显的就是OCR识别中,我们可以在拍照的时候用边界识别,把我们需要的卡号区域上传给服务器,而不是把整张图片上传上去,一张银行卡,其实服务器需要就是非常小的一部分,我目测也就一张卡的1/15,更不用说一张图片了,我们上传给服务器的越小,不仅仅是节省了流量,还节省了服务器处理的时间,这样是一个非常效率的过程了。

吹嘘了这么多,是时候干点正事了。前面说了,我对图片的理解就是一个width * hight的矩阵,那么我就用一个矩阵简单是说明我的算法

[

100 100 100 100 200 200 200

100 100 200 200 200 100 100

100
200 100 100 100 100 200

200
100 200 100 100 100 200

100
200 100 200 200 200 100

]

边界识别就是把100 - 200 和把 200 - 100的地方区别出来,100 - 100 或者 200 - 200 的地方最好能置成0,数学中处理这个最简单的方法就是求一阶导数,100-100的变化率为0,100-200的变化率为100,其实边界识别的成熟算法很多的,感兴趣的自己去找,我这儿讲一个简单的算法,把矩阵图像分成一个个2*2的小模块,

[

a1,a2

b1,b2

]

a1 = abs(a1 - b2) + abs(a2-b1);

是不是很简单~~~~~

没时间写了(先完。。。)有时间了补上色子作画。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: