灰度变换以及直⽅图均衡(Matlab代码)
⼀、灰度变换
灰度变换函数⼀般包括:线性变换、分段线性变换、⾮线性变换。灰度变换是图像增强的⼀种重要⼿段,⽤于改善图像显⽰效果,属于空间域处理⽅法,它可以使图像动态范围加⼤,使图像对⽐度扩展,图像更加清晰,特征更加明显。
1.1线性变换
改变整体灰度级像素,具体代码如下:
I=imread('ice.bmp');matlab直方图
I_gray=im2gray(I);
I2=255/20*(I_gray-50);
figure;
imshow(I);
figure;
imshow(I_gray);
figure;
imshow(I2);
1.2 ⾮线性变换
针对具体内容进⾏抑制和突出。
公式如下:
⾸先获得灰度值直⽅图:
具体代码如下:
I=imread('ice.bmp');
I_gray=im2gray(I);
imhist(I_gray);
得到直⽅图如下:
那么可以根据灰度像素进⾏分段灰度变换,
I=imread('ice.bmp');
I_gray=im2gray(I);
figure;
imhist(I_gray);
[m,n]=size(I_gray);
I_g=zeros(m,n);
a=19;
b=137;
c=250;
for i=1:m
for j=1:n
if I_gray(i,j)<a
I_g(i,j)=1561/a*I_gray(i,j);
elseif I_gray(i,j)<b
I_g(i,j)=(I_gray(i,j)-a)*((4364-1561)/(b-a))+1561;    else I_gray(i,j)<c
I_g(i,j)=(8495-4364)*((I_gray(i,j)-b)/(c-b))+4364;    end
end
end
figure;
imhist(I_g);
figure;
imshow(I_g);
⼆、直⽅图均衡
I=imread('ice.bmp');
I_gray=im2gray(I);
figure;
imhist(I_gray);
I2=histeq(I_gray,256);
imhist(I2);
imshow(I2);