影像處理法

影像處理功能已被Simatest取代,後者功能更強大——它可以模擬完整的相機系統。以下是關鍵連結。 [我們不打算棄用影像處理功能。 ]

Simatest:概述– Simatest 的簡介。推薦給初學者。

Simatest ISP/相機模擬器——使用說明和參考——非常詳細

Simatest 範例– Simatest 的使用範例。對比模擬結果和測量結果。比這篇長文更容易閱讀。

影像感測器雜訊—測量與建模—使用原始檔案進行影像感測器動態範圍和Simatest 分析

Imatest影像處理模組模擬多種影像處理操作,包括

您可以透過切換處理前後的影像,立即觀察這些操作的可見效果,並了解處理如何影響包括SSIM 、 PSNR和MTF在內的多項指標。您還可以執行光學字元辨識 (OCR)以及人臉和人物偵測。此外,還提供了一些實用工具,例如,您可以將影像儲存為未去馬賽克(模擬拜耳 RAW)格式,用於測試去馬賽克演算法。

影像處理適用於任何影像(測試圖表或其他影像)或相同大小和場景內容的成對影像(通常源自相同影像擷取)。

影像處理還可以批次處理影像,自動讀取、處理和保存批次影像。

影像處理最初是作為教育應用而設計的,旨在幫助使用者了解常見的影像退化和處理方式如何影響測量結果和影像外觀。它的靈感來自Majid Rabbani在影像感測器和電子成像會議上講授的影像處理短期課程。

Imatest 5.0 的增強功能

運行影像處理

從「實用工具」功能表開啟「影像處理」 。這將打開初始圖像處理窗口,其中包含基本說明,並且許多按鈕呈灰色顯示(以避免混淆)。這些說明可能會定期更新。

影像處理視窗開啟。點擊圖片可查看完整尺寸。

讀取輸入影像檔。可以使用任何類型的圖像,不一定是測試圖表。 (1)位於按鈕上,因為它是第一步。您可以現在或稍後裁剪圖像——裁剪設定將被保留。

批量讀取和處理文件。如果選擇了多個文件,程式將讀取、處理這些文件,並使用已儲存的設定自動將它們儲存為一個批次。 (大多數輸出結果將不可見,但您當然可以打開已儲存的檔案進行查看。)選擇檔案後,將開啟右側所示的對話方塊。名為root_file_name.ext的檔案將會儲存為root_file_name - ext -improc.png。

在批次處理影像之前,您應該先處理單一影像以確保設定正確。請注意,大量計算並未針對速度進行最佳化,因此批量處理通常每個影像需要幾秒鐘,不適用於處理大量影像。

接下來,要么

完成上述任一操作後,所有按鈕皆會啟用。您可以快速切換原始影像和處理後的影像,以顯示兩者的對比測量結果,或儲存處理後的影像。準備好後,您可以從原始影像或處理後的影像開始,執行另一組影像處理操作。

這裡展示的是散落硬幣圖表(已裁切)的影像處理介面。圖中顯示的是輸入影像(品質良好,但有一些可見雜訊)。

影像處理_灑落的硬幣_輸入影像處理視窗顯示散落的硬幣輸入影像
放大顯示(僅供展示)

裁切和縮放-裁切/縮放操作有兩種不同的類型:僅用於顯示的縮放和用於計算(以及顯示)的裁切。

影像處理模組

如前所述,按下「更新計算」按鈕後,影像處理會從左側列的頂部向下進行。一些增強步驟,特別是銳利化掩蔽,通常會在相機處理 JPEG 影像時執行。但在Imatest中使用dcraw或通用讀取原始影像進行原始影像去馬賽克時,不會執行這些步驟。

以下列出了目前可用的處理函數。大多數是標準的 Matlab 函數;其中一個是使用者從 Mathworks 文件交換中心提供的函數。非均勻性或非線性操作以粗體藍色標示。不建議在影像資訊度量計算中使用非均勻性或非線性操作。

處理區塊描述功能:
連結中描述
線性化在計算開始時對影像進行線性化(移除伽瑪編碼)。將線性化後的圖像進行運算,然後重新應用伽馬編碼。此方法最適用於標準銳利化(銳化頁面中所述的一維銳化的二維版本)。不適用於USM。 
伽瑪(並非嚴格意義上的降級)對影像進行伽瑪編碼的添加或移除。有時您可能需要移除伽瑪編碼,套用濾鏡,然後再重新套用伽馬編碼(在第二次處理中)。伽瑪值是相對於假定的輸入伽瑪值 1 而言的。輸出影像 = 輸入影像的伽瑪值 
消極的將影像反轉,即將其轉換為負片(5.0.4 版本新增)。
影像劣化:常見於處理前的影像。處理過程通常是線性的。
霧(閃光)為影像添加霧化效果:相當於添加耀斑光或遮蔽眩光。
影像輸出= sqrt(fog + (1-fog)*handles.image in 2 )
高斯濾波器 1 (在新增雜訊之前)先模糊影像。這可以模擬鏡頭模糊效果。 imgaussfilt :參數為 sigma 的二維高斯影像濾波。
雜訊(高斯雜訊)給影像添加雜訊。將使用高斯濾波器 2 進行濾波。 imnoise :在 HSV V 通道中加入雜訊。參數 sigma [] 和 Luma noise []。
高斯濾波器 2對影像進行模糊處理並添加雜訊(在添加雜訊之後)。這會影響雜訊頻譜。當 σ = 0.5 時,頻譜與去馬賽克(原始轉換)的輸出相似,去馬賽克會將奈奎斯特頻率處的雜訊從 1 降低到 0.5。 imgaussfilt :參數為 sigma 的二維高斯影像濾波。
色調增強:校正顏色或應用三種色調映射演算法之一,用於顯示高動態範圍 (HDR) 影像。色調響應可能呈現高度非線性。
顏色校正矩陣(CCM) 應用顏色校正矩陣 (CCM) ,此矩陣可在Multicharts中計算並儲存。儲存的值會在開啟影像處理時輸入。 CCM 複選框右側的「設定 CCM」按鈕會開啟一個視窗(顯示在右側;按一下縮圖以查看完整尺寸),您可以在其中設定矩陣(從檔案中讀取或從剪貼簿貼上,並選擇選項(線性化等))。顏色校正矩陣描述了 CCM,它是在Multicharts中計算的。
色調映射渲染高動態範圍 (HDR) 影像以供觀看:使用稱為色調映射的過程,將高動態範圍影像轉換為適合顯示的低動態範圍影像。色調映射是一種用於在動態範圍較有限的顯示器上近似呈現高動態範圍影像外觀的技術。非均勻和非線性色調映射:渲染高動態範圍影像以供查看
本地色調映射一種使用拉普拉斯濾波的HDR影像替代色調映射演算法。它具有不同的調整參數,產生不同的結果(影像飽和度更高)。該演算法具有非均勻性和非線性特徵。 局部色調圖
對比受限直方圖均衡化CLAHE 處理的是影像中的小區域,稱為圖塊,而不是整個影像。每個圖塊的對比都會被增強,使得輸出區域的直方圖與「分佈」參數指定的直方圖近似匹配。然後,使用雙線性插值將相鄰圖塊合併,以消除人為引入的邊界。對比度,尤其是在均勻區域中,可以進行限制,以避免放大影像中可能存在的任何雜訊。非均勻和非線性adapthisteq :對比受限自適應直方圖均衡化 (CLAHE)
空間增強:銳化和/或降噪。輸出結果取決於影像內容—可能具有高度非線性。
銳利化 USM(USM 反色蒙版)

使用非銳利化遮罩(USM) 方法銳利化灰階或 RGB 輸入影像。邊緣銳化效果最為明顯。 USM 的工作原理是從原始影像中減去高斯模糊函數。如果閾值大於 0,則低對比度區域可能不會被銳化。參見維基百科。

此函數並非線性函數,導致影像資訊指標出現一些不一致的情況。它設計用於直接處理圖像,而圖像不應進行線性化處理。非線性(令人意外;MATLAB 文件中未提及)。

imsharpen :USM銳化

銳化
標準

(新增)
Imatest 24.1
)

使用二維版本(類似「銳利化」頁面中所述的一維銳利化方法)銳利化灰階或 RGB 輸入影像。銳化效果在邊緣最為明顯。其工作原理是從原始影像中減去一個振幅降低的原始影像副本(該副本位於半徑為R 的圓形軌跡上)。

為保持線性,應勾選“線性化”選項。這將使影像在計算開始時進行線性化處理(移除伽馬編碼)。然後對線性化後的影像進行銳化,最後重新套用伽瑪編碼。建議用於測試銳利化對 影像資訊指標(例如訊號雜訊比增強或邊緣訊號雜訊比增強)的影響。

由於標準銳利化不是 MATLAB 函數,我們在下面的方塊中包含更多解釋。

自訂功能。

可以使用 USM 或標準研磨方式(但不能同時使用)。

雙邊濾波器
  • 雙邊濾波由Tomasi 和 Manduchi 於 1998 年提出,是一種用於保持邊緣平滑的非迭代方法。速度可能較慢。 (Mathworks 文件交換中心還有其他雙邊濾波器,其中一些可能速度更快,但穩定性較差。)參數:
  1. 半寬度 w 是高斯雙邊濾波器視窗的一半大小。
  2. sigma(範圍)是空間域標準差。
  3. sigma(域)是強度域標準差。

非均勻性

bfilter2 (來自 Mathworks 文件交換中心):

可以透過讀取原始影像或經過最少處理的影像(透過ReadRaw進行去馬賽克處理),然後應用諸如顏色校正矩陣(它還會應用伽馬曲線)、銳利化和雙邊濾波器等操作來模擬一個完整的(儘管是基本的)影像處理流程(一個簡單的例子——有很多選項)。

銳利化(標準;非USM)是 Imatest(非 MATLAB)的函數,旨在保持線性。

正如我們前面提到的,這是銳化頁面中所描述的一維銳化方法的二維版本。它是在我們嘗試確定使用MATLAB實現的 USM 方法是否適用於二維銳利化時創建的。 濾波函數是非線性的(確實如此)。它也比計算量更大的超音波研磨(USM)更接近典型的相機銳化。

對於銳化半徑R和銳化量A ,定義k sharp = A /( A +1)。濾波器核為 2 R +1×2 R +1 矩陣H (單位為像素),計算方法如下:(1)將距離中心r的每個元素設定為 H( r ) = max(|Rr|,0);(2)設定 H = H/∑H,然後將中心元素設為 H(R+1,R+1) = 1。

對於半徑為 2、強度為 3(強銳化)的濾波器,5×5 核為

-0.0092 -0.0409 -0.0535 -0.0409 -0.0092
-0.0409 -0.0222 0 -0.0222 -0.0409
-0.0535 0 1.0000 0 -0.0535
-0.0409 -0.0222 0 -0.0222 -0.0409
-0.0092 -0.0409 -0.0535 -0.0409 -0.0092

對於伽瑪編碼影像,應使用標準銳利化和線性化γ功能。這是一個線性操作(只要過度銳利化不會導致影像飽和)。

公用事業

影像處理視窗頂部的下拉式選單中提供了多種實用工具。 (視窗中幾乎沒有空間添加其他按鈕。)

文件顯示和/或儲存螢幕在圖像檢視器(建議使用Irfanview )中顯示螢幕,並可選擇儲存。此功能存在於多個互動式模組中。
保存圖片儲存處理後的影像。通常情況下,影像將以全精度儲存(除非選取「8 位元最大值(如下)」選項)。
保存偽原始/重新鑲嵌影像影像可儲存為偽RAW(重新馬賽克)格式或特殊格式,包括拜耳陣列、RCCC格式,也可選擇特定通道。選項眾多。請參閱“合成RAW圖像” 。
儲存影像為單色將影像(可能是彩色影像)儲存為單色影像。
交換位元組序(16 位元、32 位元輸入)交換像素內字節的順序(在極少數情況下字節順序錯誤時很有用)
以 8 位元最大精度儲存影像文件預設未選取(關閉)。如果選中,影像將以 8 位元精度保存。 (通常應取消選取此項目)。
將影像儲存為 HDR 格式將影像儲存為HDR (高動態範圍)格式
看法色條(灰階或彩色)灰階或彩色:用於 SSIM 和 PSNR 顯示。色條中的顏色可在「選項 II」中變更。
莊稼允許您選擇影像分析操作(MTF、SSIM 等)的裁切區域。與分析和檢視區域中的「裁剪」按鈕相同。
分析大多數功能與「分析和檢視」部分中的按鈕重複,但也有一些新增功能。
圖片統計呼叫圖像統計模組,查看圖像統計信息,例如直方圖和橫截面輪廓。
徑向幾何呼叫徑向幾何模組,該模組可以傳回新增或校正光學畸變、橫向色差和/或旋轉的影像。
OCR使用Matlab 的 OCR 函數進行光學字元識別
臉部偵測使用下面所述的 Matlab CAMShift例程。
探測人員使用下文所述的 Matlab detectPeopleACF例程。效果不如人臉偵測。
幫助開啟包含各種圖像處理模組描述的網頁。

結果展示與分析

顯示方式可透過影像下方的按鈕或「分析」下拉式選單進行控制。您可以選擇以視覺化方式顯示輸入影像或處理後的影像,也可以選擇以計算結果顯示(對輸入影像和處理後的影像進行分析比較)。

結果顯示摘要:可透過影像下方的按鈕或「分析」下拉式選單選擇。
輸入顯示輸入影像(1)
已處理顯示處理後的影像(2)
MTF將處理後/輸入影像的MTF顯示為空間頻率的函數。對裁剪敏感。
MTFnn顯示 MTF70-MTF10 的極座標圖(空間頻率,其中 MTF 為低頻值的nn %)
MTFnnP顯示 MTF70P-MTF10P 的極座標圖(空間頻率,其中 MTF 為峰值的nn %)
SSIM顯示結構相似性指數(SSIM) ,該指數在SSIM模組頁面中有詳細介紹。與 PSNR 相比,SSIM 與視覺差異(退化)的相關性更高。
PSNR 和差異顯示峰值訊號雜訊比和影像之間的差異。
OCR使用Matlab 的 OCR 函數進行光學字元辨識的結果
臉部偵測使用 Matlab CAMShift程式進行人臉偵測的結果。
探測人員使用下文所述的 Matlab detectPeopleACF例程進行人員偵測的結果。效果不如人臉偵測。

image_processing_displays

左側影像下方的「檢視輸入」按鈕可在「檢視輸入」 (選取處理後的影像)與「檢視處理後的影像」(選取輸入影像)之間切換。這樣可以快速直觀地比較兩張影像。切換影像時,縮放設定將保持不變。 「檢視輸入/處理後的影像」按鈕的功能與「分析與檢視」區域中的「輸入」和「處理後的影像」按鈕相同。該區域中的其他按鈕用於顯示計算結果。

SSIM顯示的是結構相似性指數, SSIM模組頁面對此有詳細介紹。它的主要用途是衡量影像壓縮對檔案保存(例如,不同品質的 JPEG 檔案)和資料傳輸造成的可見影響(即影像品質下降)。

MTF (調製傳遞函數)使用二維傅立葉變換計算處理後影像和輸入影像之間的傳遞函數,其計算方法與隨機模組類似,但有一個重要的差異。隨機模組會從活動區域的總功率譜密度中減去活動區域左右兩側灰色區域的縮放功率譜密度(隨機/散落的硬幣/枯葉圖案),從而去除大部分噪聲,而 MTF 則不進行降噪處理。因此,MTF 測量對雜訊極為敏感。

影像處理_MTF_噪聲非銳化掩蔽後雜訊高斯濾波影像的MTF

高頻滾降是高斯濾波器 2的效果,它是在添加雜訊之後應用的(因此可以改變雜訊的頻譜功率)。

您可以取消勾選影像左側「影像處理」區域中的「雜訊(高斯)」和「高斯濾波器 2」 ,然後點選「更新計算」 ,來查看僅使用銳利化遮罩 (USM) 的 MTF(本例中半徑 = 1.5,強度 = 2.5)。銳利化遮罩的頻譜響應與「銳化」頁面中所述的銳化類型不同:它的響應不是週期性的。它會上升到強度 + 1 的漸近水平並保持在較高水平。

這是一個很好的例子,說明如何使用影像處理來探索處理區塊對外觀和測量結果的影響。

影像處理_MTF_USM USM(銳利化遮罩:半徑 = 1.5;數量 = 2.5)的 MTF

並排視圖

並排視圖可讓您並排比較輸入影像和處理後的影像,即它們緊鄰著顯示。點選「檢視輸入」或「檢視處理後」(位於影像左側下方)下方的「並排檢視」複選框。首次選取該複選框時,兩張影像將完整顯示。如果您裁切其中一張影像,另一張影像也會被裁切得完全相同。這樣可以進行更有意義的比較。

影像處理並排枯葉圖的並排視圖。右側添加了雜訊、雙邊濾波器和USM。

啟用並排視圖後,底部的「分析和視圖」部分(包含 MTF、SSIM 等)將被停用。取消選取即可重新啟用。

重新鑲嵌(取消鑲嵌)

點擊「檔案」選單,選擇「儲存偽原始(未去馬賽克)影像」 (讀取檔案後),即可將影像儲存為合成的拜耳RAW格式以及其他幾種格式之一。輸出可以是標準影像檔案格式或純二進位檔案。此時會彈出一個對話框,提供多種選項。

馬賽克或通道選擇:無(普通彩色檔案輸出)、重新馬賽克(拜耳格式)、RCCC(紅-清-清-清):R 亮、RCCC(紅-清-清-清):R = C/3、單色(Y = 亮度)、單色(平均值:等權重)、紅、綠、藍。對於重新馬賽克(建立拜耳 RAW 檔案),應選擇重新馬賽克(拜耳格式)。

RmCn 中的紅色圖示可讓您選擇四種拜耳配置之一。

Gamma 調整功能可讓您調整輸出曲線的 Gamma 值。將其設為 1 表示不做任何更改。使用 2(或 2.2)可將典型的色彩空間 Gamma 值轉換為線性 Gamma 值(Gamma = 1)。

儲存檔案格式可讓您選擇標準影像檔案格式(PNG、JPG(90% 品質)、TIF(大尺寸)、BMP、8 位元二進位或 16 位元二進位)。二進位檔案可以讀入通用讀取原始資料。

綠色通道增強功能可讓您增強綠色通道,使合成的 RAW 影像更接近真實的 RAW 影像,而真實的 RAW 影像通常綠色最強。提供多種藍/紅通道等級可供選擇。

選擇“儲存”後,會彈出一個對話框,讓您選擇儲存位置和檔案名稱。預設檔名是root_file_name_png (帶有所選副檔名)。

光學字元辨識(OCR)

Imatest 5.0中新增了 OCR 功能,它使用Matlab 的 OCR 函數,該函數是Tesseract-OCR的一個實作。使用方法如下:

  • 閱讀包含感興趣文字的圖片。
  • 如有需要,對影像進行處理。處理方法包括對影像進行降級處理(例如模糊、雜訊等),以觀察其對偵測的影響;或進行影像增強處理(例如銳利化掩模、雙邊濾波等),以觀察是否可以提高偵測效果。
  • 將圖像裁剪到文字區域(如果圖像的大部分區域包含除文字以外的其他元素,強烈建議這樣做),然後
  • 點選OCR 。

這將開啟 OCR 窗口,並對影像的裁剪區域執行文字辨識操作。下方顯示了右側範例影像(雜訊(高斯)= 0.002;高斯濾波器 2 = 0.7,影像略有劣化)的識別結果。您可以下載此影像並進行實驗,以了解各種劣化和增強處理如何影響 OCR 效能。

請注意,Matlab 的 OCR 效能並不出色。即使是看起來清晰易讀的文本,識別效果也很差,尤其是在字體小於 12 磅的情況下。其性能與一些免費或低成本的 OCR 程式(例如gImageReader ( Tesseract-ocr 的圖形使用者介面前端)和TopOCR )相當。

範例圖片:點擊查看
可供下載的完整版本。

左側範例影像包含一組字元(QWERTYUIOPASDFGHJKLZXCVBNM1234567890),字號從 20 磅到 7 磅不等,字體為 Calibri 常規、粗體和負粗體。這些字元用於汽車牌照。該文件(此處)使用 Microsoft Word 建立。影像的其餘部分是增強型 eSFR ISO圖表的一部分,包含楔形區域和兩個高對比度正方形。這些區域可用於將 MTF 測量值與 OCR 效能關聯。

OCR窗口,顯示樣本影像輕微降級裁切後的辨識結果。

OCR設定

可以透過輸入字元子集來限制有效輸出字元(如果字元子集為空,則允許所有字元),然後按“計算 OCR”按鈕,從而提高字元子集結果。對於範例影像,子集包含拉丁字母大寫和數字(汽車牌照上的常見字元)。但改進效果甚微。

QWERTYUIOPASDFGHJKLZXCVBNM1234567890

標準OCR對車牌辨識效果不佳。 Matlab文件交換中心提供了一些車牌辨識程式。如果這些程序效果良好且許可允許,我們可能會添加其中一兩個。

預設顯示文字(如圖所示)。您也可以選擇「置信度及單字」 ,該選項會顯示單字置信度和單字。以下是顯示內容的幾行範例。

0.8545 QWERTYUIOPASDFGHJKLZXCVBNM1234567890
0.8361 QWERTYUIOPASDFGHJKLZXCVBNM123456789O
0.9018 18
0.7842 QWERTVU|OPASDF6HJKLZX(VBNM1234567890
0.8339 16
0.7468 QWEKTYUIOPASDFGHJKLZXCVBNM1234567B90
0.8254 14
0.7252 QWERYYUIOPASDFGI-1JKLZX(\/ENM1Z34567E9(!
0.7784 12
0.5777 QWERTYUWDDASDFGHJI(LZXCVBNM113A567E9u
0.6549 11
0.6276 uwEuHu\onAsur:.r<n<.zxn'aNM:23-4ss7s9u
0.7658 米

複製到剪貼簿您可以將目前顯示內容複製到剪貼簿,以便在文字編輯器或其他應用程式中使用。

儲存結果會儲存目前顯示內容。

可以在「設定」下拉式選單中選擇可變寬度或固定寬度字型。

人臉和人物偵測

人臉和人物偵測功能可從「分析」下拉式選單中呼叫。目前兩者都使用 Matlab 的預設值。 (我們將來可能會添加選項視窗。)參見

使用 CAMShift和detectPeopleACF進行人臉偵測和追蹤

人臉偵測的效果比人物偵測略好。這裡有一個例子,圖片是從http://epaperpress.com/portfolio/columbia.html被偷走的。 Imatest 的作者(他看起來有點狼狽)在左邊。點選「更新計算」即可移除標註(重置影像)。

人臉偵測範例(左側為Imatest作者)

人臉辨識功能大部分時間都運作良好,但說真的…你怎麼能漏掉保羅和約翰呢?