python圖像處理中,常被使用的有cv2, PIL等套件,本文介紹如何使用PIL module實作圖片濾鏡,實作的濾鏡包括彩色轉灰階、圖片高亮、柔焦效果、減少色調(ex:RED)、反相圖片等算法。

本站相關文章:[Python] PIL基本介紹

1. Install PIL module (Pillow)

使用pip安裝python PIL模組。
pip3 install Pillow

2. Import module

from PIL import Image

3. Python code

以下透過PIL取得圖片pixel的RGB數值,並藉調整pixel RGB實做幾種濾鏡。

  • 彩色轉灰階
  • 高亮
  • 柔焦
  • 減少色調
  • 反相

取圖片每個pixel的RGB值

Implement Image Filters

以下介紹個濾鏡的實作算法。
其中有用到math套件,記得需先import math。

– 彩色轉灰階

彩色轉灰階最原本的公式為:
Gray = R x 0.299 + G x 0.587 + B x 0.114

若調整為整數處理:
這個方式是32位整數乘除方式(RGB的精度是8位)。
Gray = (R x 299 + G x 587 + B x 114 + 500) / 1000
加上500是為了四捨五入。

最後是16位整數乘除運算方式:
Gray = (R x 30 + G x 59 + B x 11 + 50) / 100

– 高亮

將原圖RGB分別加上45,提高亮度。

– 柔焦

這邊簡單對每個將每個pixel的RGB值改為周圍9×9 matrix的平均值,存為新的pixel matrix後輸出。
此演算法沒有特別處理邊緣pixel,如有要求的話要特別對邊緣值做處理。

第一種code直觀取3×3 matrix值平均。程式碼較長。

第二種直接操作pixel tuple。較簡短。

– 減少色調

此範例演示減少紅色(R)後的圖。

– 反相

用255扣掉原RGB值,取得新的RGB值即為反相圖。

4. DEMO

原圖

原圖 灰階 高亮
original gray softlightFilter
柔焦 減少色調(減少紅) 反相
blur removeRED inverted

後續將實作更多濾鏡。

最後修改日期: 2021-04-01

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。