計算成像的編碼,該怎麼編?_風聞
返朴-返朴官方账号-关注返朴(ID:fanpu2019),阅读更多!2022-09-16 09:42
撰文 | 邵曉鵬(西安電子科技大學教授)
丁春秋副校長最近很是得意,他的編碼化功大法發了頂刊,還收了一個漂亮的學生——小機靈鬼阿紫,這個丫頭既會討好老師,又特別聰明,編碼化功大法領悟得比大師兄摘星子還快,頻頻在學術會議上露臉,有人説她深得編碼化功法的精髓,橫行計算成像江湖指日可待。
也有人不服氣,認為這門編碼功夫有些邪氣,有時候特別管用,成像質量特別高,但有的時候卻什麼也重建不出來。嶽不羣院長説阿紫出身信號處理,不懂光學,做什麼計算成像?她懂什麼編碼?隔壁研究所新引進的大千鳩摩智研究員更是對阿紫一百個瞧不上,卻讓徒弟去偷阿紫的代碼。
喬峯和玄慈大師論起編碼之事時,大師説:“人有正邪之分,編碼不分正邪。只是有的人急於求成,基本功不紮實,還經常把各種編碼方法匯在一起,才會出現編碼的普適性不好的問題。看着邪氣,這都是基礎不牢造成的!易筋經中就有編碼數理基礎篇,是多年來編碼高手的心血之作,可惜,很多人覺得難,不願深耕,把別人的模型拿過來改改參數就要發論文,做低水平重複的事。當然,各類號稱編碼大師的責任更大,門派林立,不開放,生怕別人偷學,這都是多年的沉痾,需要下重藥整治啊!”
“編碼雖不分正邪,卻有狹義和廣義之分。”大師喝了口茶,接着説,“目前,大多數説的是狹義的編碼,比如時間編碼、空間編碼、相位編碼,這類編碼多是主動設計的,稱為主動編碼;其實像大氣、水等介質對成像的作用,也可以理解為編碼,只是這些編碼被認為是不好的,被動引入的,我們稱其為被動編碼。”
説到這兒,大師問:“喬施主,你覺得主動編碼好還是被動編碼好呢?”喬峯答:“江湖上流行的都是主動編碼,無人談及被動編碼,好似就不存在這樣的事。我倒認為,被動編碼既然存在,並且當下我們只看到它的壞處。想必要使被動編碼有好處太難,功力淺者尚認識不到。但也許你捨去的,恰是我需要的,研究被動編碼或許能夠啓迪我們怎麼做好主動編碼。”玄慈大師讚歎:“喬施主果然大家風範,高見,高見!”
今天,我們就來看看編碼到底是什麼?為什麼要編碼?編碼的形式有哪些?我們該怎麼編碼?
1 編碼到底是什麼?
計算光學成像是下一代光電成像技術,是光電成像技術步入信息時代的必然產物,其本質是光場信息的獲取和解譯,是在幾何光學成像的基礎上有機引入物理光學信息,以信息傳遞為準則,通過信息解譯獲取更高維度的信息。
從計算光學的定義來看,計算光學可以理解為信息編碼的光學成像方法,當然,這個編碼有狹義和廣義之分,狹義的編碼就是目前計算成像中普遍採用的數字化編碼技術,經常是線性的;而在廣義上,我們可以認為所有的數學變換都是編碼,這種編碼既可以是線性的,也可以是非線性的。編碼是為了調製光場,是計算成像大師手中的魔法棒。
那麼,如果説光場是計算光學的靈魂,編碼就是靈魂的魔法師。
我們對編碼做一個簡單的分類:
首先,從編碼實現方式上來看,編碼可以是軟編碼,即採用代碼方式實現,也可以是硬編碼,即將編碼固化為光學元件,説到這裏,聰明的你自然還會想到可編程編碼。
然後,從成像鏈路上看,幾乎在鏈路中的任何位置都可以引入編碼,典型的有編碼照明(結構光、自癒合光束、傅里葉疊層成像)、編碼介質(水、大氣)、編碼光學元件(編碼孔徑、編碼快門、編碼相位板)、編碼探測器(偏振探測器、光譜探測器)等。
還可以從是否線性方面分類:線性編碼和非線性編碼;按編碼的複雜度分類:簡單編碼(時間編碼、強度編碼)和複雜編碼(散射介質編碼);從維度上分類:時間編碼、空間編碼、強度編碼、相位編碼、偏振編碼、光譜編碼和複合編碼等;從主被動方面分類:主動編碼和被動編碼(主要是介質和與材料、工藝相關的)。
很顯然,編碼的分類不重要,重要的是在什麼地方、採用什麼樣的編碼、達到什麼樣的目的。那麼,我們再簡單回顧下編碼成像的歷史吧。
最早的編碼成像應該是孔徑編碼成像,其思想源於小孔成像。小孔成像最大的問題是通光量,而成像分辨率卻與小孔的尺寸關係極大。一般而言,小孔越小成像分辨率越高,但帶來的問題是能量太弱,需要長時間曝光。小孔的尺寸太小時會出現衍射效應,導致無法成像。那麼,兩個小孔成像如何?多個小孔成像又如何?增加了小孔的數量,無疑能夠解決通光量的問題,但帶來的新問題是像的混疊。
是否可以從混疊中的像解譯出目標?當然可以,線性卷積就給我們帶來了解決方案。
小孔成像
編碼孔徑(Coded Aperture)的提出是為了在不犧牲分辨率的情況下增加光學系統的通光量。20世紀50年代中期,法國科學家馬爾夏首先提出編碼孔徑技術,該技術最大的特點是通過調整孔徑來改變光瞳函數,實現對光瞳函數的編碼。編碼孔徑技術是在傳統的光學孔徑中插入一個具有特定結構的掩模板,能夠克服傳統成像系統的缺陷,得到更好的應用。
編碼孔徑
2006年,MIT的Ramesh Raskar教授將編碼孔徑帶入了計算成像領域,以解決全景深的問題,在上一篇已有論述。既然能夠在空間域中編碼,自然就可以在時間域編碼,於是,我們就看到了Ramesh教授關於編碼曝光以解決運動模糊的設計,亦在上一篇論述。
編碼曝光
2 為什麼要編碼?我們該怎麼編碼?
為什麼要編碼?答案很簡單,編碼能給我們帶來好處。有哪些好處呢?
首先,我們從上述的分析可以得出一個結論:編碼的本質其實就是數學變換在成像中的物理表現形式,不同的編碼完成不同的功能,實現不同的目的。也就是説,成像模型中的數學變換需要用物理手段來實現,比如:壓縮編碼孔徑成像的編碼需要的是隨機編碼形式,需要滿足壓縮感知的RIP約束條件,在具體成像實現中,可採用在孔徑擋板上做0和1打孔的矩陣編碼方法,當然也可以採用反射DMD做偽隨機的編碼方法。
嚴格地講,壓縮編碼孔徑成像的測量矩陣是隨機的,每次都是隨機的,可惜的是這樣做會帶來兩個問題:
(1)壓縮感知告訴我們當採用隨機測量矩陣時,該理論能夠最大概率地恢復信號,也就是總有那麼幾次對信號的恢復並不好。這是一種樂觀的理論,在工程中存在很大的挑戰。
(2)真正的隨機編碼沒有,即使是偽隨機碼在工程上也存在很大的難度,加工成本高,控制困難。取巧的方法是加工一個固定的、看起來像是隨機的編碼(其實是某次隨機編碼的樣本),取代隨機編碼。這樣做的好處是工程代價小,實現容易,但不再嚴格滿足壓縮感知的理論約束條件,儘管每次好像都能夠得到看起來差不多“滿意”的結果。其實這能理解,成像是要重建的圖像,只要不比預想的效果差太多,人的眼睛似乎都具有很高的容忍度。當然,在這裏,我還要提一句:壓縮感知的本質是解
這樣的線性方程組,處理的對象是向量,不是矩陣;而圖像是矩陣,解決的辦法是將矩陣“拉直”,變成向量。
這樣做,對嗎?開篇中,我們曾講過光電成像是朝着“更高、更遠、更廣、更小、更強”的目標發展,編碼當然要緊緊圍繞這樣的目標去做。比如:面向更高分辨率,有壓縮編碼孔徑成像、編碼照明、編碼探測器等;面向更小的體積,有超構表面編碼、鏡面編碼等;面向更強的環境適應能力,有生物醫學成像的照明編碼、惡劣環境下的偏振成像等;當然還有解決景深問題的編碼孔徑成像和相位板編碼成像等。
我們來看一些具體的編碼成像案例。
1、對焦,望遠鏡“永遠”的痛!
“快快快,衞星馬上過頂了,趕快拍下來!”隊長命令道。旁邊的操作人員急得滿身大汗,“對不上焦啊!”
對焦的行程長,“拉風箱”現象嚴重。你看,對焦幾乎成了長焦距望遠鏡“永遠”的痛。怎麼解決對焦的問題?如果景深足夠深,那麼是不是對焦就能變得容易了?而前面的文章中,我們知道:焦距越長,景深越淺!那能不能延拓一下景深呢?傳統的方法肯定不行,但計算成像中,很多研究者發現:如果採用波前編碼的三次相位編碼方法,在數學表達式中明確能看到景深延拓的效果。於是,很多研究者就開始了拓展景深的研究工作,發了很多論文。但是,你看到相位編碼成像技術在哪裏應用了嗎?
既然有這麼好的東西,為什麼不用呢?不用一定有不用的道理,我們下一節來分析。
2、頻域編碼:可編程孔徑像素超分辨率成像
頻域編碼成像是根據空域中記錄的光強信息和頻域中某種固定的映射關係,通過在頻域的改變系統的光瞳函數,拍攝得到一系列像素級光強變化的圖像,再根據其中的映射關係來進行交替迭代更新重構,可以實現“亞像元”超分辨率成像。隨着散射成像技術的發展,很多人發現毛玻璃是一種很好的頻域編碼形式,也可以用於超分辨率成像。
3、編碼的探測器
最常見的探測器編碼其實是Bayer濾片式的彩色CCD/CMOS,之後又有了高動態範圍成像的編碼傳感器,自然,偏振探測器也可以認為是一種編碼探測器。現在很多研究者紛紛在探測器上做量子點薄膜探測器,將偏振、光譜等能加上的都加上,就一個字——“亂”!應該説,大家在探測器上玩的花樣已經很多了,但計算探測器卻千呼萬喚不出來,之後,我會有專門的一篇來講這個問題。
我們來總結一下:編碼可以説是計算成像最早出現的形式,以顛覆物像共軛的身姿出現在人們面前,使人眼前一亮,打開了計算成像的一扇門。但是,隨着編碼成像技術的發展,經常會出現賣家秀與買家秀對決的場景,賣瓜的一直誇自己的瓜甜,可是買家卻不敢輕易下手。為什麼?
我們來分析一下編碼的數學模型基礎是什麼。目前,我們看到的幾乎所有編碼算法都是建立在線性卷積模型的基礎上的,線性模型這一約束就會限定了編碼的應用。所謂編碼,表面上是擴散函數PSF的設計,本質上是對光場的調製,調製的維度可以是時間、空間、頻率、物理維度等。但是,線性模型和馮·諾依曼原理架構的計算機系統會影響編碼的質量。
那麼,我們該怎麼去評價編碼?
3 如何評價編碼?
我們還是來看一看波前編碼的三次相位板拓展景深的例子吧。關於這方面的論文,包括博士論文一大堆,説了很多很多拓展景深的好處如何,甚至説某某公司研製了相位景深擴展的顯微鏡等等,但是那個DeepView不是這個三次相位板,某百科的描述也不嚴謹。DeepView其實是一個關於景深拓展的框架,很多技術都可以實現拓展景深,目前,我們看到的顯微鏡採用的多是圖像堆棧技術實現的,關於波前編碼技術,在尼康、蔡司等公司的產品中沒有見到。讀論文需謹慎啊!