RGB,指图像上每个像素点的红、绿、蓝颜色分量。一般全彩的屏幕的每个像素点有四个通道,即R G B A, 一般用一个字节储存一个通道信息,每个通道有256的梯度。
我们通过一定的算法,修改图像上相应像素点的RGB值,就能达到所需效果。
01
- 灰度算法
彩色图片灰度化的作用:我们识别物体时,关键的因素是梯度信息(梯度:指相邻两个像素点的差异值),颜色这一分量多变,难以提供关键信息(所以全色盲的人能识别事物)。图片灰度化后,计算量能成倍减少,一般灰度就256个梯度,如果算上RGB色彩的话,那就是1600万以上梯度。
如何将彩色图像转换为灰度?如果每个颜色像素由红色,绿色和蓝色的三重(R,G,B)强度描述,那么如何将其映射到给出灰度值的单个数字?
因为人眼对RGB颜色的感知并不相同,所以转换的时候需要给予不同的权重。我们对绿色比其他颜色更敏感,所以绿色最重要。发光度的公式为 : 0.21 R + 0.72 G + 0.07 B.
灰阶
- 马赛克算法
利用邻域的任意一点代替当前邻域所有像素点,定义领域的大小,能影响马赛克效果(即厚码、薄码)
Mosaic- 美白算法
每个像素点的RGB值,越接近255越白,越接近0越黑。如果加上脸部识别算法,在脸部除了五官的地方增加相应的分量值,就能使照片达到美白的效果。
Bg- 泛洪算法
类似画图软件的油桶功能,能在封闭区域内填充颜色。从你点击的那个像素点开始,检查该点的上下左右点,看需不需要涂色,接下来检查左点的上下左右,右点的上下左右,上点的上下左右,下点的上下左右,如此递归,如洪水一般,直至每一点都遇到不同的颜色才停止。
泛洪填充算法有三种方式实现:四邻域、八邻域、基于扫描线
拓展
-
泊松融合算法(Poisson Blending)
我们在融合两个图像时,就是把不同的图像的不同部分放在一起,形成一张新的图像。融合得越自然,算法就越好。
orapple.jpg
简易理解:
如果要融合两座山峰,A山高比例为1:1:2,B山高比例为12:8:4,直接拼起来肯定会不自然。如果把其中B山峰生长的趋势记下来(梯度为3:2:1),然后在另一座山峰的融合处上按照此趋势“生长”出另一座山峰,就显得更加自然。
直接融合 无缝融合
泊松方程
4.jpg
(Open CV已经集合了所有已知图像方程,提供Api调用)
iRon
2019 06 27. 古井贡
参考:
图片处理之马赛克算法 .
图像灰度化 .
Three algorithms for converting color to grayscale .
Scanline Flood Fill Algorithm with (or without) Tolerance in Objective-C .
网友评论