clear all;
close all;
clc;
I=imread('2.jpg');
[m,n,k]=size(I);%图像各维度的长度
subplot(1,3,1);imshow(I);title('原图像');
Ig=rgb2gray(I);%生成I的灰度图像
subplot(1,3,2);imshow(Ig);title('灰度图像');
I=double(I);%转换成double图形,避免精度丢失
Max=max(max(Ig));%求出最大灰度
J=zeros(m,n,3);%生成一个三维的矩阵,后面用于存储变换后的图像
a=100;
b=200;
c=10;
d=245;
k1=c/a;
k2=(d-c)/(b-a);
k3=(255-d)/(Max-b);
for i=1:m
for j=1:n
if I(i,j,k)<=100
J(i,j,k)=k1*I(i,j,k);
else if 100<I(i,j,k)<=200
J(i,j,k)=k2*(I(i,j,k));
else J(i,j,k)=k3*(I(i,j,k)-200)+220;
end
end
end
end
J=uint8(J);
subplot(1,3,3);imshow(J);title('分段线性变换后的图像');