0
我翻譯用MATLAB製成的功能,從利用Rmagick減少RGB顏色強度在紅寶石Rmagick
的圖像的部門紅寶石降低了顏色強度for i=round(f/3):f
for j=1:round(c)
for k=1:p
A(i,j,k) = B(i,j,k) - a;
end
end
end
for i=1:round(2*f/3)
這減少所有3 RGB矩陣的顏色強度由一些價值(一)。試圖用Ruby代碼重現此產生這樣的:
(0..imagen.columns).each do |x|
((2 * imagen.rows)/3..imagen.rows).each do |y|
imagen.pixel_color(x, y, 'pink')
end
end
我可以在我的圖像的下三分之一更改爲一組顏色,在這個例子中,爲粉紅色。
試圖用每種顏色的方法減少每個組件的值(atenuacion)將不起作用,它會返回相同的圖像。
(0..imagen.columns).each do |x|
((2 * imagen.rows)/3..imagen.rows).each do |y|
pixel = imagen.pixel_color(x, y)
pixel.red - atenuacion
pixel.green - atenuacion
pixel.blue - atenuacion
imagen.pixel_color(x, y, pixel)
end
end
任何提示或建議,歡迎,謝謝提前:d
謝謝你的回答。我做了你告訴我的,目前它正在工作,但是,你可以在這裏看到:http://imgur.com/a/8osXN。它扭曲的圖像的顏色,而不是隻減少它們的強度,你可以看到我的matlab例子...任何建議? – marco
我對MATLAB沒有什麼瞭解,對圖像處理也沒有太多的瞭解,但是你的代碼看起來與你在Ruby中做的不一樣:A(i,j,k)= B(i ,j,k) - a;'。在我看來,降低像素的顏色強度與從紅色,綠色和藍色顏色值中減去相同的值不同。例如,如果你的值是*(125,38,205)*,那該怎麼辦?如果'atenuaction'是128,結果將是*( - 3,-90,77)*。我不知道RMagick對負值做了什麼,但即使它將它們限制爲零,這可能不是您期望的結果。 –