我正在使用jpeg編碼器庫(Jpegant)將原始YCbCr圖像壓縮爲Jpeg。該庫適用於YCbCr圖像,該圖像具有單獨的Y Cb和Cr組件。同樣在庫中,Y,Cb和Cr流是分開編碼的,生成的字節在標題後寫入Jpeg文件。將原始灰度圖像編碼爲JPEG,jpeg標題中的變化
現在,我想使用相同的庫僅將Y流編碼爲灰度Jpeg圖像。 我做的第一步是去除Cb和Cr編碼。所以只有Y流被編碼並寫入文件。 生成的文件不是灰度圖像,只是垃圾。
我試着通過在Cb和Cr中發送零流來做同樣的事情,這給了我想要的東西,所以我認爲這個問題不在編碼中,而是在頭文件中。我正在使用的標題在這裏描述https://github.com/t27/vt-fox-1/tree/master/STM32L1_Code/encoder#basic-output-file
我已經在SOF和SOS部分中修改了流的數量(在上面的文件中註釋爲'nrofcomponents')。我也從SOF,SOS和DHT部分刪除了相關的色度表/數據。我將Y子採樣設置爲0x11。每個部分的長度也被修改。我也使用jpegsnoop,甚至沒有錯誤。
唯一的問題是,大多數jpeg觀衆都說我的文件無效,無法顯示它。
我還應該在標題中更改什麼? PS:我創建一個16 * 8(w * h)像素數組,並一次編碼8 * 8的2個矩陣,我已將RSI設置爲Imagewidth/16。
嘗試運行'jhead -v -v -v file'來查看'jhead'是否可以告訴你任何與你的文件編碼有關的錯誤。 –
@MarkSetchell輸出jhead給出的上述命令如圖所示pastebin.com/E8pJEDmx 我不認爲這裏面有任何錯誤... –
如何使用ImageMagick的'convert yourYchannel.jpg y.png'來查看ImageMagick是否告訴你什麼是錯誤的,無法正確轉換或轉換,並確認你的數據流是正確編碼的? –