图像处理1:图像的直方图优化算法(增强图像的对比度)(附matlab和python代码)

图像的增强:

1.频域处理法:以卷积为基础,傅里叶变换,小波变换

2.空域处理法:图像灰度映射变换为基础,图像的对比度增强,图像的灰度层次优化

 

 

直方图优化算法:其基本思想是把原始图像的灰度统计直方图变换成均匀分布的形式,这样就增强了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。直方图均衡化经常用来使所有的图片具有相同的亮度条件的参考工具,这在很多情况下都很有用,例如,脸部识别,在训练分类器前,训练集 的所有图片都要先进行直方图均衡化从而使它们达到相同的亮度条件

%%%matlab代码:全局直方图处理
%导入图像
apple=imread(fullfile('D://','apple.jpg'));
%提取图像的RGB分量
R=apple(:,:,1);
G=apple(:,:,2);
B=apple(:,:,3);
%分别对图像的RGB分量进行全局直方图优化
M=histeq(R);
N=histeq(G);
L=histeq(B);
%集成全局直方图均衡后的分量得到结果图像
In=cat(3,M,N,L);
%显示结果图
subplot(2,2,1),imshow(In);
subplot(2,2,2),imshow(apple);
%灰度化,计算直方图
Q=rgb2gray(In);
W=rgb2gray(apple);
subplot(2,2,3),imhist(Q);
subplot(2,2,4),imhist(W);
#python代码 全局直方图优化
import cv2 as cv
import numpy as np
im = cv.imread('D:/apple.jpg',0)###以灰度模式读取图片
equ = cv.equalizeHist(im) #进行直方图均衡化
res = np.hstack((im,equ))#将原始图片和均衡化后的图片堆叠在一起 
#显示图片
cv.imshow('image',equ)
cv.waitKey(0)
cv.destroyAllWindows()
#保存图片
cv.imwrite('res.png',res)

自适应直方图均衡化:这种情况下, 整幅图像会被分成很多小块,这些小块被称为“tiles”(在 OpenCV 中 tiles 的 大小默认是 8x8),然后再对每一个小块分别进行直方图均衡化(跟前面类似)。 所以在每一个的区域中,直方图会集中在某一个小的区域中(除非有噪声干 扰)。如果有噪声的话,噪声会被放大。为了避免这种情况的出现要使用对比度 限制。对于每个小块来说,如果直方图中的 bin 超过对比度的上限的话,就把 其中的像素点均匀分散到其他 bins 中,然后在进行直方图均衡化。最后,为了 去除每一个小块之间“人造的”(由于算法造成)边界,再使用双线性差值,对小块进行缝合

#python
import numpy as np 
import cv2
img = cv2.imread('D:/apple.jpg',0)

clahe = cv2.createCLAHE(clipLimit=1.0, tileGridSize=(8,8)) 
cl1 = clahe.apply(img)
cv2.imshow('image',cl1)
cv2.waitKey(0)
cv2.destroyAllWindows()

#Parameters
clipLimit    Threshold for contrast limiting.对比度的上限
tileGridSize    Size of grid for histogram equalization. Input image will be divided into equally sized rectangular tiles. tileGridSize defines the number of tiles in row and column.整个图像分成小块的行数和列数

参考:https://ww2.mathworks.cn/help/images/contrast-enhancement-techniques.html

           https://docs.opencv.org/4.1.2/d6/dc7/group__imgproc__hist.html#gad689d2607b7b3889453804f414ab1018

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值