我有一套完整的幻燈片圖像~300-400 MB jp2文件,我想將它們轉換成金字塔形(多分辨率)結構,以便每個金字塔級別可以分解爲瓦片。通過defition這個文件是金字塔結構,但任何想法如何訪問特定的分辨率級別和各自的瓷磚?如何轉換金字塔形平鋪文件中的jp2?
感謝。
我有一套完整的幻燈片圖像~300-400 MB jp2文件,我想將它們轉換成金字塔形(多分辨率)結構,以便每個金字塔級別可以分解爲瓦片。通過defition這個文件是金字塔結構,但任何想法如何訪問特定的分辨率級別和各自的瓷磚?如何轉換金字塔形平鋪文件中的jp2?
感謝。
如果您正在這裏尋找一個快速簡便的解決方案是什麼,我會做:
$ kdu_expand -i input.jp2 -o output_tmp.tiff
我在這裏具體使用卡卡杜因爲沒有其他實現,我知道的是能夠處理這樣的大圖像。如果你不能使用免費的卡卡杜二進制文件(僅院院士),你可以買不起許可證的價格,你可能要與openjpeg再試一次:
$ opj_decode -i input.jp2 -o output_tmp.tiff
至少你已經被警告。
反正現在你有一個由VIPS處理的文件簡單地做:
$ vips output_tmp.tiff pyramid_deflate.tiff --tile --pyramid --compression deflate --tile-width 256 --tile-height 256
這將與256x256
平鋪尺寸(挑自己喜歡的尺寸)創建金字塔TIFF。我特別選擇deflate,因爲你沒有提到你是否接受有損壓縮。
如果你真的不關心有損假象(S),你應該不是喜歡JPEG壓縮:
$ vips output_tmp.tiff pyramid_jpeg.tiff --tile --pyramid --compression jpeg --Q 80 --tile-width 256 --tile-height 256
意見同上,我挑的80
質量在這裏,但你可以設置自己喜歡的一個在這裏。
你原本就不是很清楚:
通過defition這個文件是金字塔結構,但如何 訪問特定分辨率級別和相應的瓦片的任何想法?
這似乎是某種次要問題。在這種情況下,你可以使用openslide API在特定級別訪問特定的瓷磚:
在C:
在Python:
在Java:
雖然上面將讓你從A點到B點,這是工作的一個巨大的量。相反,可以採用更謹慎的解決方案,一次一個仔細提取JP2水平,並將它們轉換成金字塔形TIFF。由於我不知道這些工具,因此此任務可能需要在kakadu代碼庫和/或VIPS代碼庫中進行一些編碼。
這看起來像一個問題約翰@ user894763將能夠回答你... –
我同意@ malat的優秀答案。 jp2是棘手的:免費閱讀庫通常相當緩慢,而且需要內存,像openslide這樣的元庫不直接支持它。 Openslide支持多種使用jp2壓縮tile的幻燈片格式,但在一個tiff容器中,我認爲這不是Francisco要求的。 openslide問題跟蹤器也是尋求幫助的好地方:https://github.com/openslide/openslide/issues – user894763