计算图像的梯度直方图,以及两张图像之间的梯度差

本文探讨了清晰与模糊图像的梯度分布差异,通过计算和绘制梯度直方图来展示这一特性。使用OpenCV进行幅度和角度梯度计算,发现清晰图像具有明显的重尾分布,而模糊图像则不明显。经过高斯模糊处理,图像的重尾分布消失,进一步证明了这一点。

1.清晰图像和模糊图像之间的梯度分布不同,清晰图像的梯度有明显的重尾分布,而模糊图像不存在这种梯度分布;
2.对清晰图像进行高斯模糊;
3.使用opencv进行计算梯度,包括幅度梯度和角度梯度;
4.绘制图像的梯度直方图;
5.并计算两张图像之间的梯度差,并绘制差值的直方图。

#coding:utf-8
import matplotlib.pyplot as plt
from skimage.io import imread
import numpy as np
import cv2

img = imread('/home/xinan/s5.jpg')
# img = np.float32(img)/255.

img_blur = cv2.GaussianBlur(img, (15, 15), 0)
# img_blur = np.float32(img_blur)/255.

# 清晰图像的x,y方向的一阶导(梯度)
gx_ord = cv2.Sobel(img, cv2.CV_32F, 1, 0, ksize=1)
gy_ord = cv2.Sobel(img, cv2.CV_32F, 0, 1, ksize=1)
# 模糊图像的x,y方向的一阶导
gx_blur = cv2.Sobel(img_blur, cv2.CV_32F, 1, 0, ksize=1)
gy_blur = cv2.Sobel(img_blur, cv2.CV_32F, 0, 1, ksize=1)

# Calculate gradient magnitude and direction ( in degrees )
# cv2.cartToPolar这个函数计算二维向量(x,y)的幅度梯度和角度梯度
mag_ord, angle_ord = cv2.cartToPolar(gx_ord, gy_ord, angleInDegrees=True)
mag_blur, angle_blur = cv2.cartToPolar(gx_blur, gy_blur, angleInDegrees=True)

# bins_ord = angle_ord.max - angle_ord.min
# bins_blur = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值