2017-03-28 23 views
0

我有一套完整的幻燈片圖像~300-400 MB jp2文件,我想將它們轉換成金字塔形(多分辨率)結構,以便每個金字塔級別可以分解爲瓦片。通過defition這個文件是金字塔結構,但任何想法如何訪問特定的分辨率級別和各自的瓷磚?如何轉換金字塔形平鋪文件中的jp2?

感謝。

+0

這看起來像一個問題約翰@ user894763將能夠回答你... –

+0

我同意@ malat的優秀答案。 jp2是棘手的:免費閱讀庫通常相當緩慢,而且需要內存,像openslide這樣的元庫不直接支持它。 Openslide支持多種使用jp2壓縮tile的幻燈片格式,但在一個tiff容器中,我認爲這不是Francisco要求的。 openslide問題跟蹤器也是尋求幫助的好地方:https://github.com/openslide/openslide/issues – user894763

回答

0

如果您正在這裏尋找一個快速簡便的解決方案是什麼,我會做:

$ 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代碼庫中進行一些編碼。