灰度映射
先上本部分的完整代码,包含图像求反、动态范围压缩、阶梯量化、阈值分切处理。
function [pic]=hdzh(p,type,XS)
L=uint8(255);%默认是8bit的图
if nargin<3%将XS设置为缺省参数
XS=0;
end
[r,c]=size(p);
pic=uint8(zeros(r,c));
if strcmp(type,'QF')%求反
for i=1:r
for j=1:c
pic(i,j)=L-p(i,j);%L=L-1=255
end
end
elseif strcmp(type,'DTFWYS')%动态范围压缩
if XS==0
XS=uint8(L/log(double(L)));%默认压缩到[0,L-1]
end
for i=1:r
for j=1:c
pic(i,j)=uint8(XS*log(double(1+abs(p(i,j)))));
end
end
elseif strcmp(type,'JTLH')%阶梯量化
if XS==0%默认以2为阶梯
XS=2;
end
x=0:XS:300;
[~,jty]=stairs(x,x);%求解阶梯函数
for i=1:r
for j=1:c
pic(i,j)=jty(p(i,j)/XS*2+1);%给每个像素取对应的转换值
end
end
elseif strcmp(type,'YZFQ')%阈值分切
if XS==