CodeGym /課程 /Python SELF TW /處理顏色與影像校正

處理顏色與影像校正

Python SELF TW
等級 45 , 課堂 4
開放

1. 更改顏色模式

影像可以以多種顏色模式表示,例如:

  • RGB: 標準彩色模式。
  • L: 灰階模式。
  • CMYK: 用於印刷。
  • RGBA: 帶有透明通道的 RGB。

可以透過 convert() 方法將影像轉換為其他顏色模式。

轉換為灰階模式

若要將影像變成黑白,請使用顏色模式 L


# 轉換為灰階模式
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")

此程式碼將影像轉換為黑白並將其存為檔案 gray_example.jpg。這對於想創建黑白風格或準備影像進行僅關注亮度的分析特別有用。

轉換為 CMYK 模式

CMYK 常用於印刷。將影像轉換為此模式有助於用於印刷的影像準備。


# 轉換為 CMYK 模式
cmyk_image = image.convert("CMYK")
cmyk_image.save("cmyk_example.jpg")

2. 對影像應用濾鏡

Pillow 提供了幾個內建濾鏡,可以用於創建各種效果。這些濾鏡位於 ImageFilter 模組中。

套用模糊、輪廓和銳化濾鏡


from PIL import ImageFilter

# 套用模糊濾鏡
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.save("blurred_example.jpg")

# 套用輪廓濾鏡
contour_image = image.filter(ImageFilter.CONTOUR)
contour_image.save("contour_example.jpg")

# 套用銳化濾鏡
sharpened_image = image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_example.jpg")

這裡我們應用了三種不同的濾鏡:

  • BLUR: 模糊影像,對於創造柔和效果很有用。
  • CONTOUR: 突出影像中的物件輪廓。
  • SHARPEN: 提升銳度,使影像更加清晰。

其他濾鏡

Pillow 中的一些其他有用濾鏡:

  • DETAIL: 突出細節。
  • EDGE_ENHANCE: 增強邊緣。
  • SMOOTH: 平滑影像。

# 套用增強邊緣濾鏡
edge_image = image.filter(ImageFilter.EDGE_ENHANCE)
edge_image.save("edge_enhance_example.jpg")

3. 調整亮度、對比度、銳度和飽和度

Pillow 中的 ImageEnhance 套件讓我們可以輕鬆變更影像的亮度、對比度、銳度與顏色飽和度。

調整亮度

要更改亮度,請使用類別 ImageEnhance.Brightness。亮度係數可以是任何數值:1.0 — 原始亮度,小於 1.0 — 減少亮度,大於 1.0 — 增加亮度。


from PIL import ImageEnhance

# 調整亮度
enhancer = ImageEnhance.Brightness(image)
brighter_image = enhancer.enhance(1.5)  # 增加亮度 50%
brighter_image.save("brighter_example.jpg")

調整對比度

對比度使亮的部分變得更亮,暗的部分變得更暗。可使用 ImageEnhance.Contrast 來調整對比度。


# 調整對比度
enhancer = ImageEnhance.Contrast(image)
higher_contrast_image = enhancer.enhance(1.5)  # 增加對比度 50%
higher_contrast_image.save("higher_contrast_example.jpg")

調整銳度

銳度決定影像中物件邊緣的清晰度。可使用 ImageEnhance.Sharpness 來調整銳度。


# 調整銳度
enhancer = ImageEnhance.Sharpness(image)
sharper_image = enhancer.enhance(2.0)  # 增加銳度 200%
sharper_image.save("sharper_example.jpg")

1.0 保持原始銳度,值小於 1.0 使影像更加模糊,而值大於 1.0 使影像更加銳利。

調整顏色飽和度

顏色飽和度使顏色變得更加或更少濃烈。可使用 ImageEnhance.Color 來變更飽和度。


# 調整飽和度
enhancer = ImageEnhance.Color(image)
more_vibrant_image = enhancer.enhance(1.5)  # 增加飽和度 50%
more_vibrant_image.save("more_vibrant_example.jpg")

4. 比較影像校正方法

方法 描述 應用
convert("L") 將影像轉換為黑白模式 黑白風格,亮度分析
ImageFilter 套用模糊、銳化等濾鏡 效果疊加,物件突出
ImageEnhance.Brightness 調整影像亮度 增加或降低亮度
ImageEnhance.Contrast 調整對比度 改善細節可見性
ImageEnhance.Sharpness 調整銳度 強調邊緣,增加清晰度
ImageEnhance.Color 調整顏色飽和度 創造明亮飽和的影像

5. 範例

完整影像處理範例

讓我們結合上述所有內容,創建一段程式碼,執行多階段的顏色校正,應用濾鏡,調整亮度、對比度和飽和度。


from PIL import Image, ImageEnhance, ImageFilter

# 載入影像
image = Image.open("example.jpg")

# 轉換為黑白模式
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")

# 套用銳化濾鏡
sharpened_image = gray_image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_gray_example.jpg")

# 增加亮度
enhancer = ImageEnhance.Brightness(sharpened_image)
brighter_image = enhancer.enhance(1.3)  # 增加亮度 30%
brighter_image.save("brighter_gray_example.jpg")

# 增加對比度
enhancer = ImageEnhance.Contrast(brighter_image)
higher_contrast_image = enhancer.enhance(1.5)  # 增加對比度 50%
higher_contrast_image.save("final_example.jpg")

實際應用顏色校正

  • 照片處理: 調整亮度與對比度可改善照片的細節可見性,而濾鏡能讓影像更具表現力。
  • 影像分析準備: 轉換為黑白、提高銳度與對比度能讓影像更加清晰,適合分析。
  • 影像風格化: 調整飽和度並套用濾鏡可創造獨特風格和效果,適合設計專案。
1
問卷/小測驗
使用 Pillow 處理圖片,等級 45,課堂 4
未開放
使用 Pillow 處理圖片
使用 Pillow 處理圖片
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION