我一直在研究一個問題,我需要將矩陣保存爲圖像,並且它是MATLAB中矩陣的真正無損示例。MATLAB tif文件格式vrs PNG文件格式。真正的無損壓縮?
我試圖寫的圖像既無損形式的PNG和TIFF:
Name Size Bytes Class Attributes diff 237x354 671184 double imPng 237x354 167796 uint16 imPngD 237x354 671184 double imTiff 237x354 83898 uint8 imTiffD 237x354 671184 double padded 2042x2170 35449120 double testImage 237x354 671184 double
testImage是我想無損保存矩陣。
我用以下行矩陣寫爲TIF和PNG:
EDU>> imwrite(testImage,'imTiff.tif','tiff','compression','none');
EDU>> imwrite(testImage,'imTiff.png','PNG','bitdepth',16);
我然後加載的圖像返回到工作空間(imTiff和inPng),並轉換它們的兩倍。
EDU>> imPngD = im2double(imPng);
EDU>> imTiffD = im2double(imTiff);
但是當我從testImage中減去imPngD或imTiffD時,剩下剩餘的值。
我的問題是:
我的處理過程中有什麼問題嗎?
如果不是,這是否意味着tif和png並非完全無損?
我可以提供圖片,如果你認爲它會幫助。
我認爲這些圖像可能會有所幫助: testImage
imTiffD和testImage
區別
imPngD和testImage
的區別請注意:灰色像素的值圖像2-3是零,即testImage和重新加載的圖像之間的差異爲零。
他們有什麼不同?難道這只是浮點錯誤的副作用嗎? –
對於PNG,像素值是否適合16位?如果這些值具有分數,則轉換爲16位整數可能會導致精度損失。看看Tiff對象,如果你想寫真正的雙值像素。 –
對不起,我不熟悉浮點錯誤。差異很小,如果我把最大和最小的差異testImage - imTiffD的答案是+ - 0.001960784313725和testImage - imPngD的答案是+ - 7.629510948348184e-06 – Gavin