とある理系院生の勉強日記

モチベーション維持用兼備忘録

OpenCVでSobelオペレータをやってみる

自分の認識ですが...

Sobelオペレータは微分オペレータの課題である画像中のノイズに反応してしますことを解決したもの。

微分方向には微分オペレータを適用し、法線方向には平滑化を行う。

 

1画像をグレースケールに変換

2Sobel関数を利用

 

以下サンプルはx方向とy方向にそれぞれSobelオペレータを適用したもの。

 

# -*- coding: utf-8 -*-

import cv2

img = cv2.imread("lena.jpeg")

img_gray =cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

img_sobel_x = cv2.Sobel(img_gray, cv2.CV_32F, 1, 0)
img_dst_x = cv2.convertScaleAbs(img_sobel_x)

img_sobel_y = cv2.Sobel(img_gray, cv2.CV_32F, 0, 1)
img_dst_y = cv2.convertScaleAbs(img_sobel_y)

cv2.namedWindow("sobel_x")
cv2.imshow("sobel_x", img_dst_x)
#cv2.imwrite("lena_sobel_x.jpeg", img_dst_x)

cv2.namedWindow("sobel_y")
cv2.imshow("sobel_y", img_dst_y)
#cv2.imwrite("lena_soble_y.jpeg", img_dst_y)

cv2.waitKey(0)
cv2.destroyAllWindows()

 

f:id:youthtia:20171017195508j:plain

f:id:youthtia:20171017195524j:plain