我有一個3維字節數組。將三維字節數組轉換爲單字節數組
三維數組表示一個JPEG圖像。每個通道/陣列代表RGB光譜的一部分。
我對保留黑色像素不感興趣。黑像素由該非典型佈置表示:
myarray[0,0,0] =0;
myarray[0,0,1] =0;
myarray[0,0,2] =0;
所以,我通過這樣做byte[] AFlatArray = new byte[width x height x 3]
,然後分配相應的座標值平坦化該3D陣列出到一維數組。
但就像我說過的我不想黑色像素。所以這個數組只能包含帶有x,y座標的彩色像素。我想要的結果是從僅包含非黑色像素的i維字節數組重新表示圖像。我怎麼做?
它看起來像我必須存儲黑色像素以及由於xy座標系統。我已經嘗試寫入二進制文件,但該文件的大小大於jpeg文件,因爲jpeg文件是壓縮的。
我需要一個單字節數組,因爲我有一個具有紅色綠色和藍色組件的圖像。我想存儲2張圖片的區別。所以,這是一個3個暗淡的陣列。由於不是所有的像素都會有所不同,我只想存儲差異。但是,即使平坦化尺寸仍然大於圖像的字節大小(因爲它是一個JPEG和壓縮)。
我正在使用emgu圖像框架。當你枚舉一幅圖像的數據時,它可以給你3個通道,每個通道用一個字節數組中的維度表示。我正在使用的3個頻道是(R)ed,(G)reen和(B)lue。我可以在HSL或HSV(等)的色彩空間工作,然後我可以使用3個色調,飽和度和亮度通道。
爲什麼你需要一個單字節數組,出於好奇? :) – Ryan
@minitech我有一個圖像,它有紅色的綠色和藍色的組件。我想存儲2張圖片的區別。所以,這是一個3個暗淡的陣列。由於不是所有的像素都會有所不同,我只想存儲差異。但是,即使平坦化尺寸仍然大於圖像的字節大小(因爲它是一個JPEG和壓縮)。所以,沒有人回答解決了我的問題,但他們確實回答了這個問題 –
我不明白兩張圖片之間的區別是如何構成一個三維數組。你的意思是一維有3個部分(RGB)? – Ryan