OpenCVの使い方入門 メディアン処理(ぼかし)の入れ方解説
有名画像処理ライブラリ OpenCV でメディアン処理(ぼかし)のやり方解説
最近の画像処理の需要増加はめざましいものがあります。
私の会社でも画像処理の需要は年々増えており,かなりの頻度でアプリケーション開発を行っています。まぁだいたいのアプリケーションは製品に部品が組まれているかどうかなどの有る無し判定程度ですが色々な工程から求められています。
実際に画像処理システムの世界市場のグラフを表示しておきます。目覚ましい伸び率ですよね。今後労働人口の減少もあわさって日本での需要は右肩上がりでしょう。
そのため画像処理で何が出来るのかを把握しておく事は非常に重要になります。
OpenCVのメディアン処理(ぼかし)プログラミングを紹介 (Python)
OpenCVは非常に人気のある画像処理ライブラリで,主要な画像処理は簡単なプログラミングで実装できます。
画像処理の基本についてはこちらの記事で,OpenCVによる画像の読込などはこちらの記事で紹介していますので是非見ていってください。
さて,OpenCVによる画像のメディアン処理を紹介していこうと思います。使用するプログラミング言語はPythonです。
まず,ベースとなる画像は私の個人的趣味で2020年10月時点で絶賛大人気のVTuberである百鬼あやめ様の画像を使用させていただきます。普段は同じ事務所の常闇トワ様の画像を使わせていただきましたが,今回紹介するメディアン処理と類似したブラー処理解説で使わせていただいたので今回は百鬼あやめ様で解説します。それに浮遊している霊?が画像処理の物体検出で使えそうですし。
やっぱり無邪気な感じがかわいいですね~。
こちらの画像をC:\Temp\ayame.jpgという名前で保存して以下のプログラムを実行するだけでメディアン処理(ぼかし)をさせる事ができます。
import cv2
img = cv2.imread('C:/Temp/ayame.jpg') #これでimgにグレースケール画像が入
dst = cv2.medianBlur(img,3) #指定した範囲でメディアン処理(ぼかし)を実施
cv2.imwrite('C:/Temp/medianBlur3.jpg',dst) #画像を保存
簡単ですよね。cv2.medianBlurに元画像データとメディアン処理を行う範囲を入れると戻り値としてぼかし(平滑化)データが帰ってきます。
ちなみに,出力画像はこんな感じになります。引数を3,11,15にした場合の画像も例として示しておきます。
だんだんとぼけていっているのが分かりますね。引数を3に指定した場合はあまり変化がないようですが,色の変化が大きい浮遊霊の部分は目が少しきえかけています。引数をあげていくと水性画のようになりますね。和風なキャラなのでこれはこれで映えます。
ちなみに,このメディアン処理はブラー処理と異なり,中央値を採用するために第2引数は奇数を指定する必要があります。
cv2.medianBlurによる内部処理を解説
実際にcv2.medianBlurの処理を解説していこうと思います。
メディアン処理はぼかしと書いてありますが実際には一定範囲内の値で中央値を取って平滑化しています。詳しい処理内容は以下の通りです。
この計算の場合,中央値を参考にするので第2引数を大きくしたほうが変化の少ない画像(ぼかし)のようになります。
昔ながらの画像っぽく見せるには非常に有意義な処理かも知れませんね。是非みなさんも使ってみてください。