LoginSignup
3
2

More than 3 years have passed since last update.

Python detailEnhanceFilter(詳細強化フィルタ)を用いた靄(かすみ)除去

Last updated at Posted at 2020-01-25

背景

撮影した写真などが意図せず霞む場合があります。そのため、霞画像に対して画像処理を用いて霞を除去したいというニーズがあります。

実際に下記のサイトを拝見するとAdobeの製品にも霞除去機能があります。
site: https://blogs.adobe.com/japan/cc-adobe-stock-contributor-j-curbon-lightroom-how-to-goto-2/

今回はPythonとOpenCVを用いて簡易な靄除去方法をご紹介します。

detailEnhanceFilter

今回はOpenCVのNon-Photorealistic Renderingに実装されているdetailEnhanceFilterを使用します。

ライブラリの詳細は下記サイトにてご確認ください。
https://docs.opencv.org/master/df/dac/group__photo__render.html

実装

image_processing.py
from PIL import Image
import numpy as np
import cv2

def main():
    img = np.array(Image.open('images/input.jpg'))
    dst = cv2.detailEnhance(img, sigma_s=10, sigma_r=0.15)
    Image.fromarray(dst).save('images/result.jpg')

if __name__ == '__main__':
    main()

実行結果

入力は先ほどご紹介したサイトの画像をお借りしました。
site: https://blogs.adobe.com/japan/cc-adobe-stock-contributor-j-curbon-lightroom-how-to-goto-2/

入力画像

input.jpg

出力画像

result.jpg

Adobe様の霞除去

ado.jpg

所感

怪しくないか...
詳細強化フィルタという名前の通りでエッジが強化されているのが分かります!
しかしエッジ周辺画素が白い印象がありますね。
ただ1行の関数でこの変換能力!OpenCVは素晴らしいですね。
今回はdetailEnhanceフィルタのみの効果を試したかったので前処理は一切していません。
前処理を増やすとより良くなる印象です。
パラメータも未調整です。
ご興味のあるお方はぜひお試しください。
最後にライブラリのバージョンは下記の通りとなります。

ライブラリ

version
Python 3.7.6
opencv-python 4.1.2.30
numpy 1.18.1
pillow 7.0.0
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2