opencv で 鮮鋭化
鮮鋭化 / アンシャープマスキング を行います。
チュートリアルには登場しないし、専用の関数も無いのですが、cvFilter2D で、kernel にマイナスを使用して適用することで実現するようです。
filter2D
使用するカーネルは
0, −1, 0 −1, 5, −1, 0, −1, 0
−1, −1, −1 −1, 9, −1, −1, −1, −1
などです。
結果
オリジナル
4近傍
8近傍
#!/usr/bin/env python # -*- coding: utf-8 -* import sys import cv2 import numpy as np def main(): # BGR image = cv2.imread('img/um.02.png') cv2.namedWindow("original") cv2.moveWindow("original", 200, 200) cv2.imshow('original', image) kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]], np.float32) #kernel = np.array([[0,-1,0], [-1,5,-1], [0,-1,0]], np.float32) print(kernel) dst = cv2.filter2D(image, -1, kernel) cv2.namedWindow("result") cv2.moveWindow("result", 200, 400) cv2.imshow('result', dst) cv2.imwrite('img/um.k9.png', dst) cv2.waitKey(0) cv2.destroyAllWindows() return 0 if __name__ == '__main__': try: main() except KeyboardInterrupt: pass