灰度变换
直接灰度变换
说明
逐点运算,按照一定的变换关系,逐点该点原灰度图像中每一个像素灰度值,但不改变空间位置关系。
原理
灰度图像的线性拉伸。若灰度级局限在很小的范围内(灰度级0~255
),显示出来的是模糊不清、没有层次感的图像;通过线性变换对每个像素点做线性变换,有效改变你图像视觉效果,即扩大原始的灰度等级范围,显得有层次。
常见变换
因为是点运算,图像是二维,由二维数组表示即f(x,y)
表示灰度值。
变换公式::g(x,y)=T[f(x,y)]
线性变换或者非线性变换。
线性变换:g(x,y)=T[f(x,y)]=af(x,y)+b;
:原灰度值乘以a加b
非线性变换: 对数变换g=clog(1+f)
压缩数据,使灰度级密集
指数变换: g=crn拉大不同灰度级距离、提高图像对比度
【两者可从数学角度理解:对数随横坐标变大曲线变得平缓,而指数陡峭】
反转变换: g(x,y)=255-f(x,y)
灰度级反转
分段线性变换: 突出感兴趣目标所在的灰度区间,抑制不感兴趣的灰度区间。

%分段线性变换
R=imread('辣椒.png'); %输入图像
J=rgb2gray(R);%灰度变换先要将彩色变成灰色
[M,N]=size(J);%size()函数获得图像的宽度和高度;返回矩阵J的尺寸信息,存储在m[行],n[列]中
x=1;y=1;
for x=1:M;%分段线性变换
for y=1:N;
if(J(x,y)<35);%矩阵中所有的值,灰度范围小于35,扩大10倍
H(x,y)=J(x,y)*10;
elseif(J(x,y)>35&&J(x,y)<=75);
H(x,y)=(10/7)*[J(x,y)-5]+50;
else(J(x,y)>75);
H(x,y)=(105/180)*[J(x,y)-75]+150;
end
end
end
set(0,'defaultFigurePosition',[100,100,1000,500]);%修改图形图像位置的默认设置
set(0,'defaultFigureColor',[1 1 1])%修改图形背景颜色的设置
figure(1),
subplot(121),imshow(J);
subplot(122),imshow(H);
直方图
说明
性质
直方图均衡化
说明
图像的代数运算
说明
以上的代码实现:https://pan.baidu.com/s/1na4ZrUo9v_OKwN-JePCKow?pwd=hv36
提取码:hv36