灰值转换和图像抖动

灰值转换

这里通过6种计算得到不同的灰阶图像。

( r + g + b ) / 3 (r+g+b)/3 (r+g+b)/3

平均三色通道之和

0.3 ∗ r + 0.59 ∗ g + 0.11 ∗ b 0.3*r+0.59*g+0.11*b 0.3r+0.59g+0.11b

敏感的绿光在三者最大
相比红色和绿色,人们更能察觉明亮的绿色,为了显示真实的明度,这样表示各通道的区别。

( m a x ( r , g , b ) + m i n ( r , g , b ) ) / 2 (max(r,g,b)+min(r,g,b))/2 (max(r,g,b)+min(r,g,b))/2

平均两极通道

m a x ( r , g , b ) max(r,g,b) max(r,g,b)

保留最亮通道

m i n ( r , g , b ) min(r,g,b) min(r,g,b)

保留最暗通道

r o u n d ( ( r + g + b ) / 3 / 255 ) ∗ 255 round((r+g+b)/3/255)*255 round((r+g+b)/3/255)255

二阶黑白

图像抖动

加入抖动让点的密度接近原图的灰度,画面的扁平突兀增加了细节之后会变得更重更有质感。

Floyd–Steinberg dithering

抖动二阶黑白
r o u n d ( ( r + g + b ) / 3 / 255 ) ∗ 255 round((r+g+b)/3/255)*255 round((r+g+b)/3/255)255计算的二阶黑白图像抖动之后出现了更多细节。

同理这里以JavaScript关键代码演示Floyd–Steinberg dithering算法来实现彩色图像抖动。

for(var i=0;i

八色图
抖动八色图
这里称一次抖动为一次采样,当前像素被采样之后所产生的量化误差转移给未被采样的临近的四个像素,如果当前像素向下取整,临近的像素向上取整的概率就更大,平均下来量化误差接近0。

如果给一张50%灰度图,红黄蓝三通道值都为127或者都为128,用Floyd–Steinberg dithering算法抖动之后会呈现出黑白棋盘的模样。

算法《https://wswmsword.github.io/2019/05/17/A-floyd-steinberg-dithering/》
参见

Seven grayscale conversion algorithms (with pseudocode and VB6 source code)
YUV
A little more detail about Histograms
Dither
抖动 (数字信号处理)
Floyd–Steinberg dithering
噪点插画的六种绘制方法
Coding Challenge #90: Floyd-Steinberg Dithering

原图原图


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部