常會有人問“圖像處理中的開放的領域是什么?”
在圖像處理/計算機視覺方面,一切仍然是一個開放的研究領域!
但為什么會這樣呢?你認為經過幾十年的研究,我們會很自然地說“這里的問題已經解決了,讓我們專注于別的事情”。在某種程度上,我們可以這樣說,但僅適用于狹窄和簡單的用例(例如,在空的白板上放置紅色勺子),而不是一般的計算機視覺(例如,在所有可能的場景中找到一把紅色的勺子,就像一個大盒子滿了五顏六色的玩具)。
在我們深入研究我認為計算機視覺如此嚴峻的主要原因之前,我首先需要解釋機器如何“看到”圖像。當我們人類觀看圖像時,我們會感知物體,人物或景觀。當機器“查看”圖像時,他們看到的只是代表單個像素的數字。
一個例子可以解釋這一點。假設你有一個灰度圖像。然后,每個像素由一個通常在0到255之間的數字表示(我在這里抽象壓縮,顏色空間等等),其中0表示黑色(無顏色),255表示白色(全強度) )。0到255之間的任何一個都是灰色陰影,如下圖所示。
因此,對于要任何獲取圖像內容的機器來說,它必須以某種方式處理這些數字。這正是圖像/視頻處理和計算機視覺的全部 - 處理數字!
接下來將從四個方面來解釋,解決這個問題非常困難的主要原因。
數據量大
固有的信息丟失
伴隨噪音
理解圖像含義困難
正如我上面所說,當涉及到圖像時,所有計算機都看到數字...... 很多數字!許多數字意味著需要處理的大量數據才能被理解。
我們舉一個例子來說明圖像的數據量究竟有多大。如果您具有1920 x 1080分辨率的灰度(黑白)圖像,則表示您的圖像由200萬個數字(1920 * 1080 = 2,073,600像素)描述。現在,如果切換到彩色圖像,則需要三倍的數字,因為通常情況下,當您表示彩色像素時,您可以指定它所包含的讀數,藍色和綠色。然后,如果你試圖分析來自視頻/攝像機流的圖像,例如30幀/秒的幀速率(現在是標準的幀速率),你突然處理1.8億個數字每秒(3 * 2,073,600 * 30~ = 1.8億像素/秒)。這是需要處理的大量數據!即使擁有當今功能強大的處理器和相對較大的內存大小,機器也很難做出有意義的事情,每秒有1.8億個數字。
數字化過程中的信息丟失是造成計算機視覺難度的另一個主要因素。圖像處理的本質是從3D世界(如果我們處理視頻流中的數據則是4D)投影到2D平面(即平面圖像)上獲取信息。這意味著在此過程中會丟失大量信息。
我們的大腦可以非常出色的推斷出丟失的數據是什么,但是對于計算機來說卻是極其困難的挑戰。下圖顯示的是一個凌亂的房間
我們可以很容易地看出,綠色健身球比桌子上的黑色平底鍋更大更遠。但是如果黑色平底鍋比綠色球占據更多的像素,機器應該如何推斷呢?這不是一件容易的事。當然,我們可以嘗試通過同時拍攝兩張照片并從中提取3D信息來模擬我們用兩只眼睛看到的方式,這被稱為立體視覺。然而,將圖像拼接在一起也不是一項微不足道的任務,因為同樣是一個開放的研究領域。
數字化過程中經常伴隨著噪音。例如,沒有相機會拍攝出一個完美的不含噪聲的現實圖片,特別是當我們用手機上的相機進行拍照時,他們會通過調整強度等級,色彩飽和度等去嘗試捕捉我們美麗的世界。同時在圖像拍攝過程中肯能會出現“鏡頭光暈”的現象,我們可以輕松的判斷光暈后面是什么場景,而對于計算機來說確實非常困難的。
雖然已經有很多去除光暈的算法,但是去除光暈的算法本身也是開放的領域。
另外,在圖像壓縮的過程中會對圖像降低像素或者變換操作,而這樣的圖片對于人來說可以輕松的識別,而對于計算機,如果不告訴它壓縮變換的操作,它會當作壓縮后的圖像為原圖像進行識別,從而產生錯誤。
最后也是最重要的是就是對圖像內容的理解。對于機器來說,這絕對是計算機視覺環境中最難處理的事情。當我們觀看圖像時,我們會用累積的學習和記憶(稱為先驗知識)來分析它。
例如,我們知道,我們可以坐在健身球上,而平底鍋通常用在廚房里,因為這些東西我們過去已經了解過。如果有一些東西看起來像天空中的平底鍋,很可能它不是平底鍋(除非是紅太狼把打灰太狼的平底鍋扔天上了),因此我們可以進一步仔細檢查,以確定對象可能是什么(例如飛盤!)。或者如果有人圍著綠球踢球,很可能是小孩子的球而不是健身球。
但機器沒有這種知識。他們不了解我們的世界,不了解其中固有的復雜性,以及我們在數千年的進化中創造的眾多工具,商品,設備等。也許有一天機器將能夠獲得維基百科并從那里了解有關對象的信息,但目前我們離這種情況很遠。
有些人會爭辯說,我們永遠不會達到機器能夠完全理解我們現實的階段 - 因為意識總是對他們來說是遙不可及的。
但是在未來的發展中誰又說的好呢。