1:做過圖像顯示的都知道,我們的圖片大部分都是壓縮過的,大部分為JPEG PNG BMP其中BMP格式是點陣形式,當圖片翻譯到記憶體之後無論壓沒壓縮過都會變成BMP格式放進記憶體,在這個過程中,圖片數據會幾倍的增大,就比如JPEG,一張1M大小的JPEG格式的圖片,翻譯到記憶體可能就會變成7倍左右,也就是 ...
1:做過圖像顯示的都知道,我們的圖片大部分都是壓縮過的,大部分為JPEG PNG BMP其中BMP格式是點陣形式,當圖片翻譯到記憶體之後無論壓沒壓縮過都會變成BMP格式放進記憶體,在這個過程中,圖片數據會幾倍的增大,就比如JPEG,一張1M大小的JPEG格式的圖片,翻譯到記憶體可能就會變成7倍左右,也就是7M會放在電腦記憶體裡面,如果顯示一張100M的JPEG圖片,放進記憶體的話可能就會成為1G,好瞭如果是1G的圖片呢,你的電腦記憶體還夠用嗎,可以,兄弟你可以說我電腦配置很高 達到16G記憶體條,,如果我要讓你顯示一張4G的圖片呢,註意壓縮過的,翻譯到記憶體將近28G,你說我可以買一個28G的記憶體條,可以 ,兄弟你很有錢,哈哈哈,,如果你非要這樣,這篇文章可以不用看了,跪拜土豪。那如果,我就想用一個2G的記憶體條顯示這張壓縮過還有4G的圖片咋辦,並且我還想生成這張圖片呢,就比如說,我用顯微鏡拍一張切片,或則一個材料的紋理結構,那麼雖然或許一個切片只有幾個CM,但是顯微鏡人家解析度高呀,看的細呀,用顯微鏡不就是想把圖片放大個幾千倍顯示嘛,好了,問題來了,這樣顯微照相機可能要拍上千張圖片,最後拼接成一張大圖,然後放在電腦上顯示,所有醫生可以在電腦面前指指點點,是不是很方便,但是,同志,問題又來了,電腦記憶體不夠,你也生成不了這麼大的圖片,生成的過程也是在電腦記憶體裡面的, 好了,廢話不多說了,看下麵的演示吧。
1:準備一張54889x80315圖片,當然不一定很多人會有這麼大的圖片,因為不知道這種技術的話,也沒法生成這麼大的圖片。
如圖:
這張圖片大小是54889x80315 這數據量大概有多大呢,我算了一下,大概是4.2041G,細心的網友可能會註意到,為什麼顯示的大小隻有399M 呢,,哈哈哈,,這就是另一個技術了,想聽的朋友們,會在後續的文章中,解密。
2:現在假設我們大家都有了這張圖片了,下麵我們想顯示這張圖片:首先,都會想到的,我用常規的瀏覽器試一下唄,我們就先用微軟自帶的圖片瀏覽器,不要小瞧了這個windows圖片查看器,親測,他很智能,也很高效,千萬不要以為他是個小程式,有時候我確實可以打開我的圖片,即使我的圖片有著我設計的特殊的數據結構和壓縮形式,PS都不能打開我的圖片,這家伙可以打開,所以在這裡我還是很佩服這個圖片瀏覽器。
怎麼樣,哈哈哈,電腦記憶體不夠吧,當然這個瀏覽器再弔,也只是傻大粗的野蠻式顯示這張圖片,當然記憶體不夠用了。我在我朋友8G記憶體的電腦上也試了,一樣死機!!!顯示都顯示不了了,還談什麼產生這張圖片。
3:但是呢,我用自己寫的軟體,就可以打開這張圖片,當然之前我也知道怎麼產生這張圖片,這是一個完整的流程;我的軟體打開的效果是:
來一張全局的圖像效果:如下:
其實把圖片使勁縮小顯示,圖片的全局效果就長成這樣。其實效果和你顯示一張小圖片沒什麼區別,流暢度,還有你可以做標記,什麼的,,,,這些都是很多別的瀏覽器都具備的附加功能,但是當這些附加功能實現過程也是很痛苦的,為什麼呢,就是因為這是一張超大圖片,太大了,顯示機制不一樣,所以一切傳統方法都得顛覆一下。
寫的好累,這個項目,做了兩年,就是為了完成這個軟體,整個過程也比較痛苦,因為我是機械出身,現在還在學校讀研究生,寫代碼的水平趕不上科班出身,這項技術整個完整流程,我打算慢慢寫下來,從你如何產生一張目前為止最大的圖片,讓你圖像拼接突破電腦限制,讓你如何顯示出來,如何平移,如何縮放,如何做標記等等,,太多了內容,,完整工程文件,包括編譯好的庫文件,我都有,壓縮包解壓就可以直接用,我用WPF編寫的,其實WPF就和C#差不多,其實他兩是兄弟。代碼數量超過好幾萬。可是花費了我好大的心血。有興趣的朋友可以百度一下Aperio,MOTIC這些企業,Aperio這個軟體是和他的儀器配套出售的,據說一臺儀器好幾百萬,功能就是顯微鏡掃描一個切片,然後打開瀏覽切片,主要是方便醫生進行切片檢查,同時減輕醫生的工作量,要知道,沒有這個儀器的話,醫生可要用眼睛一個個看切片,成千上萬的切片這是要累死醫生呀!!!眼睛瞅瞎!!!Aperio他們做的掃描一張切片就幾秒,然後就輸入到電腦,用軟體顯示出來,這個軟體核心功能,也就是我這個軟體的功能。。。。。。。
整個軟體涉及到的技術有,TIFF圖像技術,四叉樹,虛擬顯示技術,虛擬容器技術,記憶體映射文件技術,圖像金字塔技術等等剩下的就是什麼,做標記,XML文檔管理,縮略圖顯示,UI佈局等等 真的很多。
有興趣的朋友可以關註後續的文章,有需要這個軟體的可以聯繫我,我的郵箱[email protected],可以商量。今天就寫到這。。。。。。