RGB 实用技巧

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 .

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容