OpenCV で濃淡をはっきりさせる

OpenCV で濃淡をはっきりさせるために、「ぼかしを引く」という操作をする。

コード

元画像に「ぼかし」を混ぜると輪郭が曖昧になるが、逆に「ぼかし」を引くと輪郭を強調できる。コードは下記の記事とほぼ同じ。パラメータ v を負の値に設定して画像を編集する。

コードに画像ファイル名を渡して実行する。

import cv2
import sys
import numpy as np

# ぼかす( v < 0 で濃淡を強調する)                                                                                 
def b(img1,i,v):
    img2 = cv2.blur(img1,(i,i))
    img1f = np.float32(img1)
    img2f = np.float32(img2)
    return ct(img1f * (1. - v) + img2f * v)

# 値を0-255にclipして、typeをuint8にする                                                 
def ct(img):
    return np.clip(img,0,255).astype(np.uint8)

file_name = sys.argv[1]
img = cv2.imread(file_name)
img2 = b(img,20,-0.8)

cv2.imwrite(file_name.replace(".",".out."),img2)

元画像と、濃淡を強調した画像

コードを実行して濃淡を強調した画像を作る。

元画像:都立水元公園の木々
濃淡強調画像: 広さi = 20 比率 v = -0.8

濃淡を強調すると、画像は硬く、はっきりとした印象になる。のっぺりとした部分はザラザラし、ノイズが強調されることもある。

元画像:滝の中に見えた虹
濃淡強調画像: 広さi = 3000 比率 v = -2.0

パラメータを極端な値にすると、印象が強くなる。上記画像では、広さi = 3000 比率 v = -2.0 とした。

コメント

タイトルとURLをコピーしました