📄 code2.m
字号:
img1=imread('lenna.bmp');
A=double(img1);
C=floor(A./5);
rate2=be_count2(C);%调用计算图象灰度(分成52段)直方图函数
rate=be_count(C);%调用计算图象灰度直方图函数
add_rate2=rate2;
for i=2:52
add_rate2(i)=add_rate2(i)+add_rate2(i-1);
%累积直方图
end
img3=uint8(C);
std=[zeros(1,9),0.1,zeros(1,9),0.2,zeros(1,10),0.3,zeros(1,10),0.3,zeros(1,9),0.1];%规定化直方图
add_std=[zeros(1,9),0.1,zeros(1,9),0.3,zeros(1,10),0.6,zeros(1,10),0.9,zeros(1,9),1];%"累计"规定化直方图
t=[0.1,0.3,0.6,0.9,1];
for j=1:4
for i=1:52
if add_rate2(i)<=t(j)&add_rate2(i+1)>=t(j)
if abs(add_rate2(i)-t(j))<=abs(add_rate2(i+1)-t(j)) T(j)=i;
else T(j)=i+1;
end
end
end
end
%---------------------组映射------
for j=1:256
for i=1:256
k=C(i,j)+1;%k为1--52的数,表示A(i,j)所属的段号(分段的下标)
if k<=T(1)%映射到0--45
C(i,j)=C(i,j).*(45/T(1));
elseif k<=T(2)%映射到46--95
C(i,j)=C(i,j).*(95/T(2));
if C(i,j)<46 C(i,j)=46; end
elseif k<=T(3)%映射到96--150
C(i,j)=C(i,j).*(150/T(3));
if C(i,j)<96 C(i,j)=96; end
elseif k<=T(4)%映射到151--205
C(i,j)=C(i,j)*(205/T(4));
if C(i,j)<151 C(i,j)=151; end
elseif k<=42
C(i,j)=205;
else C(i,j)=C(i,j)*5;
end
end
end
K=floor(C);
k=be_count(K);%调用计算均衡化后的图象灰度直方图函数
img4=uint8(C);
subplot(2,2,1);plot(rate);
subplot(2,2,3);plot(k);
subplot(2,2,2);imshow(img3);title('分段原图');
subplot(2,2,4);imshow(img4);title('组映射规定化');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -