java读取16位深png_读取16位灰度TIFF
我正在嘗試使用小型C程序讀取16位灰度TIFF文件(BitsPerSample = 16),以轉換為浮點數數組以供進一步分析 . 根據 Headers 信息,像素數據在2048×2048像素的單個條帶中 . 編碼是小端的 .
有了這個頭信息,我希望能夠讀取2048x2048x2字節的單個塊并將其解釋為2048x2048個2字節整數 . 我實際得到的是每張1024x1024像素的圖片split into four quadrants,其中較低的兩張僅包含零 . 前兩個象限中的每一個看起來都像我預期的整個畫面看起來:alt text http://users.aber.ac.uk/ruw/unlinked/15_inRT_0p457.png
如果我讀了same file into Gimp或Imagemagick,兩個都告訴我他們必須減少到8位(這對我沒有幫助 - 我需要全范圍),但像素出現在正確的位置:alt text http://users.aber.ac.uk/ruw/unlinked/15_inRT_0p457_gimp.png這表明我對如何在一個條帶內排列數據的想法是錯誤的 . 另一方面,文件必須根據 Headers 信息正確格式化,否則Gimp不會正確 . 我哪里錯了?
tiffdump的輸出:
15_inRT_0p457.tiff:
魔術:0x4949版本:0x2a
目錄0:偏移8(0x8)下一個0(0)
ImageWidth(256)LONG(4)1 <2048>
ImageLength(257)LONG(4)1 <2048>
BitsPerSample(258)SHORT(3)1 <16>
壓縮(259)短(3)1 <1>
光度學(262)短(3)1 <1>
StripOffsets(273)LONG(4)1 <4096>
方向(274)短(3)1 <1>
RowsPerStrip(278)LONG(4)1 <2048>
StripByteCounts(279)LONG(4)1 <8388608>
XResolution(282)RATIONAL(5)1 <126.582>
YResolution(283)RATIONAL(5)1 <126.582>
ResolutionUnit(296)SHORT(3)1 <3>
34710(0x8796)LONG(4)1 <0>
(標記34710是攝像機信息;為了確保這不會將整個范圍從圖像文件目錄的末尾歸零到0x1000處的數據開始,并且實際上沒有任何區別 . )
總結
以上是生活随笔為你收集整理的java读取16位深png_读取16位灰度TIFF的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java登录注册升级代码_【升级版】Ja
- 下一篇: java事件的接收_spring发布和接