0%

以圖表比較 OpenCV 中不同的 resize 方法

過去常常使用 OpenCV 的各種功能,包含轉灰階或是放大縮小。放大縮小雖然大概知道他的算法邏輯,也看得出來放大縮小後和原始圖片的差異,但很難說出不同方法實際上有那些差異。因此!今天我決定把這幾個常用的方法進行實作然後進行數值上的比較。

實驗條件

接下來會說明今天的實驗條件,包含參賽的 resize 方法。

Resize 倍率

  • 放大:2x, 5x, 10x
  • 縮小:0.5x, 0.2x, 0.1x

Resize 方法

以下是今天參賽的 resize 方法以及他們分別會進行何種縮放。

  • cv2.INTER_LINEAR:both
  • cv2.INTER_AREA:downscale
  • cv2.INTER_CUBIC:upscale
  • cv2.INTER_LANCZOS4:upscale
  • cv2.INTER_NEAREST:both

比較方法

對原始圖片進行每種方法的縮放,共會產生 21 張經過縮放後的圖片,接著以倍率和方法為單位建立視覺化圖表進行比較。

  • Mean RGB/LAB:亮度、色彩偏移分析
  • Sharpness:Laplacian 銳利度
  • Texture:Sobel 邊緣強度
  • Entropy:資訊熵,細節豐富程度

實驗結果展示

以下會根據放大縮小的倍率為一節的單位展示圖表分析,原圖可以參考 GitHub

0.1x

0_1x_Entropy
0_1x_Mean LAB
0_1x_Mean RGB
0_1x_Sharpness
0_1x_Texture

0.2x

0_2x_Entropy
0_2x_Mean LAB
0_2x_Mean RGB
0_2x_Sharpness
0_2x_Texture

0.5x

0_5x_Entropy
0_5x_Mean LAB
0_5x_Mean RGB
0_5x_Sharpness
0_5x_Texture

2x

2x_Entropy
2x_Mean LAB
2x_Mean RGB
2x_Sharpness
2x_Texture

5x

5x_Entropy
5x_Mean LAB
5x_Mean RGB
5x_Sharpness
5x_Texture

10x

10x_Entropy
10x_Mean LAB
10x_Mean RGB
10x_Sharpness
10x_Texture

結尾

有興趣的各位可以到我的GitHub repo逛逛,看看有沒有可以補充的。