麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

Ruby實現的圖片濾鏡算法代碼

2020-10-29 19:34:23
字體:
來源:轉載
供稿:網友

原圖


一、灰度算法

彩色照片每一個像素的顏色值由紅、綠、藍三種值混合而成,紅綠藍的取值分別由很多種,于是像素的顏色值也可以有很多種顏色值,這就是彩色圖片的原理,而灰度照片則只有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實現:

 #灰度化圖片 #取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

灰度效果:


二、二值化

圖像二值化就是將圖像上的像素點的灰度值設置為0或255,也就是將整個圖像呈現出明顯的黑白效果。所有灰度大于或等于閾值的像素被判定為屬于特定物體,其灰度值為255表示,否則這些像素點被排除在物體區域以外,灰度值為0,表示背景或者例外的物體區域。

圖像二值化常常用于破解驗證碼等圖片識別應用上

#二值化圖片 #小于一定閾值設為0 0 0,大于設置為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

二值化效果


 三、底片

底片效果的實現很簡單,就是將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

底片效果


四、浮雕效果

浮雕的算法相對復雜一些,用當前點的RGB值減去相鄰點的RGB值并加上128作為新的RGB值。由于圖片中相鄰點的顏色值是比較接近的,因此這樣的算法處理之后,只有顏色的邊沿區域,也就是相鄰顏色差異較大的部分的結果才會比較明顯,而其他平滑區域則值都接近128左右,也就是灰色,這樣
就具有了浮雕效果。

在實際的效果中,這樣處理后,有些區域可能還是會有”彩色”的一些點或者條狀痕跡,所以最好再對新的RGB值做一個灰度處理。

#浮雕效果 #浮雕的算法相對復雜一些,用當前點的RGB值減去相鄰點的RGB值并加上128作為新的RGB值。由于圖片中相鄰點的顏色值是比較接近的, #因此這樣的算法 處理之后,只有顏色的邊沿區域,也就是相鄰顏色差異較大的部分的結果才會比較明顯,而其他平滑區域則值都接近128左右, #也就是灰色,這樣就具有了浮雕效果。 #在實際的效果中,這樣處理后,有些區域可能還是會有”彩色”的一些點或者條狀痕跡,所以最好再對新的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

浮雕效果


項目主頁

geekeren/RubyImageProcess

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲一区二区免费 | 久久久www成人免费毛片 | 精品在线观看一区二区 | 7777在线视频免费播放 | 亚洲免费视频一区 | 欧美交在线 | 亚洲精品7777 | 黑人操穴 | 久久久久久久免费看 | 欧美成人黄色小视频 | 日韩av影片在线观看 | 亚洲乱码精品久久久久 | 欧美日韩一区三区 | 欧美日韩视频网站 | 日本高清黄色片 | 丰满年轻岳中文字幕一区二区 | 沉沦的校花奴性郑依婷c到失禁 | 久久蜜臀一区二区三区av | 91麻豆精品国产91久久久无需广告 | 中文字幕精品在线播放 | chinese xvideos gay| 久久成人综合网 | 免费看日韩av| 婷婷一区二区三区四区 | av成人一区二区 | 最新一级毛片 | 成人情欲视频在线看免费 | 久久蜜桃精品一区二区三区综合网 | 亚洲一区久久久 | 亚洲性在线视频 | 国产视频在线观看免费 | 在线播放亚洲视频 | 日韩1区| 免费看搡女人无遮挡的视频 | www.guochan | 日本aaaa片毛片免费观看视频 | 精品一区二区久久久久久按摩 | 日本中文字幕网址 | 成人三级视频网站 | 人成久久 | 国产一级毛片国语版 |