图像处理算法100问python代码实现part2

本文介绍了Python图像处理中的直方图相关操作,包括直方图绘制、归一化、改变标准差和平均值以及均衡化。此外,还详细讲解了伽马校正和多种仿射变换,如平移、缩放、旋转和倾斜,通过Matplotlib和相关算法实现。
摘要由CSDN通过智能技术生成

0.1原始图像1

原始图像

0.2加了噪声的图像

在这里插入图片描述

20-23:直方图相关操作

输入图像:灰度较暗的图像
在这里插入图片描述

20.画直方图

使用 Matplotlib 来绘制 imori_dark.jpg !
直方图显示了不同数值的像素出现的次数。在 Matplotlib 中有 hist() 函数提供绘制直方图的接口。
plt.hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype=‘bar’, align=‘mid’, orientation=‘vertical’, rwidth=None, log=False, color=None, label=None, stacked=False)
常用:
x:指定要绘制直方图的数据。
bins:指定直方图条形的个数。
range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值。
rwidth:设置直方图条形的宽度

import cv2
import numpy as np
import matplotlib.pyplot as plt

# Read image
img = cv2.imread("../1.jpg").astype(np.float)

# Display histogram
#img.ravel():功能为将多维数组降为一维数组
plt.hist(img.ravel(), bins=255, rwidth=0.8, range=(0, 255))
plt.savefig("out.png")
plt.show()

在这里插入图片描述

21.直方图归一化

直方图会存在偏差。比如说,数据集中在 处(左侧)的图像全体会偏暗,数据集中在 处(右侧)的图像会偏亮。
如果直方图有所偏向,那么其动态范围( dynamic range )就会较低。
为了使人能更清楚地看见图片,让直方图归一化、平坦化是十分必要的。
这种归一化直方图的操作被称作灰度变换(Grayscale Transformation)。将像素点取值范围从[c,d] 转 换到[a,b] 的过程由下式定义。
在这里插入图片描述

import cv2
import numpy as np
import matplotlib.pyplot as plt

# histogram normalization
def hist_normalization(img, a=0, b=255):
	# get max and min
	c = img.min()
	d = img.max()

	out = img.copy()

	# normalization
	out = (b-a) / (d - c) * (out - c) + a
	out[out < a] = a
	out[out > b] = b
	out = out.astype(np.uint8)
	
	return out


# Read image
img = cv2.imread("../imori_dark.jpg").astype(np.float)
H, W, C = img.shape

# histogram normalization
out = hist_normalization(img) #先归一化

# Display histogram
plt.hist(out.ravel(), bins=255, rwidth=0.8) #再画直方图
plt.savefig("out_his.png")
plt.show()

# Save result
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.imwrite("out.jpg", out)

在这里插入图片描述
在这里插入图片描述

22.改变直方图的标准差和平均值

可以使用下式将平均值为m标准差为s 的直方图变成平均值为m1 标准差为 s1的直方图。这里并不是变更直方图的动态范围,而是让直方图变得平坦。
在这里插入图片描述

def hist_mani(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值