• 欢迎加“百元导航”为主页,windows8风格,0.3s极速加载
  • 王柏元的博客专用搜索引擎:极客人,就用“极客搜”!
  •    9个月前 (12-30)  算法语言 |   抢沙发  211 
    文章评分 0 次,平均分 0.0

    一、灰度算法

    彩色照片每一个像素的颜色值由红、绿、蓝三种值混合而成,红绿蓝的取值分别由很多种,于是像素的颜色值也可以有很多种颜色值,这就是彩色图片的原理,而灰度照片则只有256种颜色,一般的处理方法是将图片颜色值的RGB三个通道值设为一样,这样图片的显示效果就会是灰色。

    灰度处理一般有三种算法:

    • 1 最大值法:即新的颜色值R=G=B=Max(R,G,B),这种方法处理后的图片看起来亮度值偏高。
    • 2 平均值法:即新的颜色值R=G=B=(R+G+B)/3,这样处理的图片十分柔和
    • 3 加权平均值法:即新的颜色值R=G=B=(R * Wr+G*Wg+B*Wb),一般由于人眼对不同颜色的敏感度不一样,所以三种颜色值的权重不一样,一般来说绿色最高,红色其次,蓝色最低,最合理的取值分别为Wr = 30%,Wg = 59%,Wb = 11%

    下面是加权平均值法的Ruby实现:

     

    灰度效果:

    Ruby图片处理基本算法(二)二值、灰度、浮雕...

    out_grey.jpg

    二、二值化

    图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。
    图像二值化常常用于破解验证码等图片识别应用上

     

     

    二值化效果

    Ruby图片处理基本算法(二)二值、灰度、浮雕...

    out_binary.jpg

    三、底片

    底片效果的实现很简单,就是将RGB的每一个通道值取反,就是用255去减

     

    底片效果

    Ruby图片处理基本算法(二)二值、灰度、浮雕...

    out_contrary.jpg

    四、浮雕效果

    浮雕的算法相对复杂一些,用当前点的RGB值减去相邻点的RGB值并加上128作为新的RGB值。由于图片中相邻点的颜色值是比较接近的,因此这样的算法处理之后,只有颜色的边沿区域,也就是相邻颜色差异较大的部分的结果才会比较明显,而其他平滑区域则值都接近128左右,也就是灰色,这样
    就具有了浮雕效果。

    在实际的效果中,这样处理后,有些区域可能还是会有”彩色”的一些点或者条状痕迹,所以最好再对新的RGB值做一个灰度处理。

     

    浮雕效果

    Ruby图片处理基本算法(二)二值、灰度、浮雕...

    out_emboss.jpg

    项目主页

    geekeren/RubyImageProcess

      
     

    本文已在版权印备案,受著作权法律保护,未经允许不得转载!如需转载请联系作者或访问版权印获取授权,如果你觉得这篇文章对你有用,可以点击下面的“赞助作者”打赏作者!

    转载注明原文出处:王柏元的博客>>http://wangbaiyuan.cn/ruby-basic-image-processing-algorithm-2-binary-grayscale-emboss.html

    关于
    记录生活,镌刻心路;泼洒文墨,分享技术!王柏元的博客致力于IT经验交流,并原创翻译引进外文文章,打开IT国际化视野

    发表评论

    格式

    暂无评论

    登录

    忘记密码 ?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册