第一、图像的亮度变换
一、图像直方图
灰度直方图主要应用与图像分割和图像灰度变换等处理过程中,它是图像灰度值得函数,统计一幅图像中各个灰度级出现的次数或概率。
b = imhist(f,b); %灰度直方图 b是用于形成直方图的“收集箱”的个数
图像直方图归一化
f = imread('C:\Users\hepanhui\Desktop\red.gif'); figure; %打开新窗口 [M,N] = size(f); [counts,x] = imhist(f,32); %计算有32个小区间的灰度直方图 counts = counts/M/N; %计算归一化灰度直方图各区间的值 stem(x,counts); %绘制归一化直方图
输入red图像: 输出归一化直方图:
二、灰度的Gamma变换
y=(x+esp)^r 其中x,y取值范围为[0,1];esp为补偿系数;r为Gamma系数
Gamma变换是根据r的不同取值选择性的增强低灰度区域的对比度或者高灰度区域的对比度。
g = imadjust(f, [low_in high_in], [low_out high_out],gamma)
若high_out小于low_out,则输出亮度会反转。
f = imread('C:\Users\hepanhui\Desktop\lena.jpg'); figure; %打开新窗口 imshow(imadjust(f,[],[],0.5)); title('Gamma 0.5');
输入lena图像: Gamma 0.5:
三、对数变换
t=clog(k+s) c为尺度比例常数,s为源灰度值,k为常数
灰度的对数变换可以增强一幅图像中较暗部分的细节,可用来扩展被压缩的高值图像中的较暗像素。广泛应用于频谱图像的显示中。
注意:log函数会对输入图像矩阵s中的每个元素进行操作,但仅能处理double类型的矩阵。而从图像文件中得到的图像矩阵大多是uint8类型的,故需先进行im2double数据类型转换。
f = imread('C:\Users\hepanhui\Desktop\red.gif'); F = fft2(im2double(f)); F = fftshift(F); %FFT频谱平移 F = abs(F); T = log(F+1); %频谱对数变换 figure;imshow(F,[]);title('未经变换的频谱'); figure;imshow(T,[]);title('对数变换后');
未经变换的频谱: 对数变换后: