幾種圖片濾鏡算法代碼實(shí)現(xiàn)(灰度、浮雕县遣、二值糜颠、底片)[Ruby]

原圖

out_raw.jpg

一、灰度算法

彩色照片每一個像素的顏色值由紅萧求、綠其兴、藍(lán)三種值混合而成,紅綠藍(lán)的取值分別由很多種夸政,于是像素的顏色值也可以有很多種顏色值元旬,這就是彩色圖片的原理,而灰度照片則只有256種顏色守问,一般的處理方法是將圖片顏色值的RGB三個通道值設(shè)為一樣匀归,這樣圖片的顯示效果就會是灰色。

灰度處理一般有三種算法:

  • 1 最大值法:即新的顏色值R=G=B=Max(R酪碘,G朋譬,B),這種方法處理后的圖片看起來亮度值偏高兴垦。
  • 2 平均值法:即新的顏色值R=G=B=(R+G+B)/3,這樣處理的圖片十分柔和
  • 3 加權(quán)平均值法:即新的顏色值R=G=B=(R * Wr+G*Wg+B*Wb),一般由于人眼對不同顏色的敏感度不一樣探越,所以三種顏色值的權(quán)重不一樣狡赐,一般來說綠色最高,紅色其次钦幔,藍(lán)色最低枕屉,最合理的取值分別為Wr = 30%,Wg = 59%鲤氢,Wb = 11%

下面是加權(quán)平均值法的Ruby實(shí)現(xiàn):

  #灰度化圖片
  #取RGB三色平均值
  def self.grey(bmp)
    for i in 0 .. bmp.height - 1
      for j in 0 .. bmp.width - 1
        rgb = bmp.getRGB(i, j)
        grey = rgb.r.to_f * 0.3+rgb.g.to_f *0.59 +rgb.b.to_f * 0.11.to_i
        bmp.setRGB(i, j, RGB.new(grey, grey, grey))
      end
    end
  end

灰度效果:

out_grey.jpg

二搀擂、二值化

圖像二值化就是將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,也就是將整個圖像呈現(xiàn)出明顯的黑白效果卷玉。所有灰度大于或等于閾值的像素被判定為屬于特定物體哨颂,其灰度值為255表示,否則這些像素點(diǎn)被排除在物體區(qū)域以外相种,灰度值為0威恼,表示背景或者例外的物體區(qū)域。
圖像二值化常常用于破解驗(yàn)證碼等圖片識別應(yīng)用上

#二值化圖片
  #小于一定閾值設(shè)為0 0 0寝并,大于設(shè)置為255 255 255
  def self.binarization(bmp)
    imageGreyLevel = bmp.getGreyLevel
    for i in 0 .. bmp.height - 1
      for j in 0 .. bmp.width - 1
        rgb = bmp.getRGB(i, j)
        if rgb.getGreyLevel<imageGreyLevel
          bmp.setRGB(i, j, RGB.new(0, 0, 0))
        else
          bmp.setRGB(i, j, RGB.new(255, 255, 255))
        end
      end

    end
  end

二值化效果

out_binary.jpg

三箫措、底片

底片效果的實(shí)現(xiàn)很簡單,就是將RGB的每一個通道值取反衬潦,就是用255去減

#底片化圖片
  #RGB取反色255-
  def self.contraryColor(bmp)
    for i in 0 .. bmp.height - 1
      for j in 0 .. bmp.width - 1
        rgb = bmp.getRGB(i, j)
        bmp.setRGB(i, j, rgb.getContrary)
      end
    end
  end

底片效果

out_contrary.jpg

四斤蔓、浮雕效果

浮雕的算法相對復(fù)雜一些,用當(dāng)前點(diǎn)的RGB值減去相鄰點(diǎn)的RGB值并加上128作為新的RGB值镀岛。由于圖片中相鄰點(diǎn)的顏色值是比較接近的弦牡,因此這樣的算法處理之后,只有顏色的邊沿區(qū)域哎媚,也就是相鄰顏色差異較大的部分的結(jié)果才會比較明顯喇伯,而其他平滑區(qū)域則值都接近128左右,也就是灰色拨与,這樣
就具有了浮雕效果稻据。

在實(shí)際的效果中,這樣處理后买喧,有些區(qū)域可能還是會有”彩色”的一些點(diǎn)或者條狀痕跡捻悯,所以最好再對新的RGB值做一個灰度處理。

#浮雕效果
  #浮雕的算法相對復(fù)雜一些淤毛,用當(dāng)前點(diǎn)的RGB值減去相鄰點(diǎn)的RGB值并加上128作為新的RGB值今缚。由于圖片中相鄰點(diǎn)的顏色值是比較接近的,
  #因此這樣的算法 處理之后低淡,只有顏色的邊沿區(qū)域姓言,也就是相鄰顏色差異較大的部分的結(jié)果才會比較明顯瞬项,而其他平滑區(qū)域則值都接近128左右,
  #也就是灰色何荚,這樣就具有了浮雕效果囱淋。
  #在實(shí)際的效果中,這樣處理后餐塘,有些區(qū)域可能還是會有”彩色”的一些點(diǎn)或者條狀痕跡妥衣,所以最好再對新的RGB值做一個灰度處理。
  def self.emboss(bmp)

    preRGB=RGB.new(128, 128, 128)

    for i in 0 .. bmp.height - 1
      for j in 0 .. bmp.width - 1
        currentRGB=bmp.getRGB(i, j)
        r=(currentRGB.r-preRGB.r)*1+128
        g=(currentRGB.g - preRGB.g)*1+128
        b=(currentRGB.b-preRGB.b)*1+128

        bmp.setRGB(i, j, RGB.new(r,g,b).getGreyRGB)
        preRGB = currentRGB
      end
    end

  end

浮雕效果

out_emboss.jpg

項(xiàng)目主頁

geekeren/RubyImageProcess

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末戒傻,一起剝皮案震驚了整個濱河市税手,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌需纳,老刑警劉巖芦倒,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異候齿,居然都是意外死亡熙暴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門慌盯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來周霉,“玉大人,你說我怎么就攤上這事亚皂【阆洌” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵灭必,是天一觀的道長狞谱。 經(jīng)常有香客問我,道長禁漓,這世上最難降的妖魔是什么跟衅? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮播歼,結(jié)果婚禮上伶跷,老公的妹妹穿的比我還像新娘。我一直安慰自己秘狞,他們只是感情好叭莫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著烁试,像睡著了一般雇初。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上减响,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天靖诗,我揣著相機(jī)與錄音郭怪,去河邊找鬼。 笑死呻畸,一個胖子當(dāng)著我的面吹牛移盆,可吹牛的內(nèi)容都是我干的悼院。 我是一名探鬼主播伤为,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼据途!你這毒婦竟也來了绞愚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤颖医,失蹤者是張志新(化名)和其女友劉穎位衩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熔萧,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡糖驴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了佛致。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贮缕。...
    茶點(diǎn)故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖俺榆,靈堂內(nèi)的尸體忽然破棺而出感昼,到底是詐尸還是另有隱情,我是刑警寧澤罐脊,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布定嗓,位于F島的核電站,受9級特大地震影響萍桌,放射性物質(zhì)發(fā)生泄漏宵溅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一上炎、第九天 我趴在偏房一處隱蔽的房頂上張望恃逻。 院中可真熱鬧,春花似錦反症、人聲如沸辛块。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽润绵。三九已至,卻和暖如春胞谈,著一層夾襖步出監(jiān)牢的瞬間尘盼,已是汗流浹背憨愉。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卿捎,地道東北人配紫。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像午阵,于是被迫代替她去往敵國和親躺孝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容