2012-05-22 21 views
5

我對圖像處理是全新的。我對什麼是JPEG內部以及它如何工作一無所知。Ruby-vips圖像處理庫。有什麼好的使用例子嗎?

我不知道,如果我能找到一塊地方Ruby代碼執行以下操作簡單:

  1. 打開JPEG文件。
  2. 遍歷每個像素並將其顏色設置爲fx綠色。
  3. 將結果寫入其他文件。

我在這樣一個使用紅寶石貴賓庫來實現特別感興趣
https://github.com/ender672/ruby-vips

我的目標 - 瞭解如何執行使用紅寶石貴賓基本的圖像處理操作(伽馬校正,亮度,色調,...)

工作示例的任何鏈接比'hello world'更復雜 - 就像ruby-vips的github頁面上的鏈接將被高度讚賞!

如果有別的ruby-vips,我也會爲他們感謝。


UPDATE

,因爲我問這個問題發生了許多事情:

+0

ruby​​-vips看起來被遺棄在github上。記住這一點,特別是如果你想使用更高版本的紅寶石。 – d11wtq

+0

工作樹位於https://github.com/jcupitt/ruby-vips。 rubygems也發佈了ruby-vips:http://rubygems.org/gems/ruby-vips –

+0

謝謝。其實看起來不錯。將必須有一個發揮它。我們真的需要一些可以在畫布上繪畫的東西(目前我們傾向於開羅)......我希望在紅寶石圖像處理方面有更多可用的(像這樣)。 – d11wtq

回答

9

我是libvips的維護者之一,這是ruby-vips包裝的圖像處理庫。

Tim的ruby-vips存儲庫尚未觸及一段時間。我這裏有一個叉,與當前libvips工作:

https://github.com/jcupitt/ruby-vips

有主專署網站的另一個紅寶石貴賓例如,基準頁面上。此示例加載一張圖像,每邊裁剪100個像素,縮小10%,再次銳化並保存。

http://www.vips.ecs.soton.ac.uk/index.php?title=Speed_and_Memory_Use#ruby-vips

要設置紅色和藍色通道爲零,只留下一個 綠色形象(這是什麼意思?),你可能會1.操作得心應手由 零和G乘以R和B因爲這是「lin」(意思是 「線性變換」)。

http://rubyvips.holymonkey.com/classes/VIPS/Image.html#M000123

out = in.lin(a, b) 

集的每一個像素中證明是

out = in * a + b 

它可以讓你給數爲a和b的陣列和將使用每幅圖像的信道的一個 數組元素。因此,因此:

#!/usr/bin/ruby 

require 'rubygems' 
require 'vips' 
include VIPS 

im = Image.new('/home/john/pics/theo.jpg') 
im = im.lin [0, 1, 0], [0, 0, 0] 
im.write('x.jpg') 

要改變圖像伽瑪你可以嘗試這樣的:

im = im.pow(0.5).lin(255/255 ** 0.5, 0) 

雖然這將是一個有點慢(它會調用戰俘()爲每個像素三次),查找表會更快,然後運行pow(),然後通過表映射圖像:

lut = Image.identity(1) 
lut = lut.pow(0.5).lin(255 /255 ** 0.5, 0) 
im = im.maplut(lut) 
+4

關於ruby-vips與RMagick的關係:vips的優勢是內存使用量會低得多(例如在基準測試中爲100倍),速度要快得多(在基準測試中爲5倍),而且更大,更靈活圖像處理操作範圍和像素格式(例如,rmagick僅支持1至5個圖像通道,並與浮點圖像爭鬥)。 rmagicks的優點是廣泛的使用,更全面的文檔和一組匹配常見用例的內置操作(例如,vips沒有內置的porter-duff合成,你需要自己推出)。 – user894763

+0

很好的答案!謝謝! –

+0

我可能不得不考慮修補CarrierWave以將其用作RMagick的替代方案。我對RMagick並不抱太大的熱情,這看起來更好,謝謝。 – d11wtq

1

對不起,我不知道紅寶石貴賓,但ImageMagick是經典的圖像處理。有一些形式爲RMagickcurrent repo)的Ruby綁定,您可以從ImageMagick文檔中獲得很多功能,但也有三個教程here以及網上的很多示例。

如果你真的想深入到圖像處理,這在它的根是信號處理的形式理論(這完全是令人興奮的和有益的,因爲它往往可以讓你在圖像上應用非常類似的算法音頻/視頻信號,但它最終會在數學上變得非常沉重 - 傅立葉變換),那麼,如果數學不會嚇倒你,我只能推薦閱讀Gonzalez和Woods的book,我會說它是確切的參考這個領域。這很昂貴,但是您需要有足夠的內容來幫助您開始並超越。 Here's如果您想先開始而不花費大量金錢,那麼也可以鏈接到免費電子書。

相關問題