在下面的代码基础上设定几组不同的区间端点显示变换前后的图像及直方图。im = im2doubleimreadpouttif;subplot241;imshowim;title原图像;hw=sizeim;newimage1=zeroshw;newimage2=zeroshw;newimage3=im;a=60256;c=120256;b=150256;d=210256;for x=1w
区间端点1:a=0.2,b=0.5,c=0.1,d=0.9 区间端点2:a=0.2,b=0.5,c=0.4,d=0.6 区间端点3:a=0.3,b=0.7,c=0.2,d=0.8
代码如下:
im = im2double(imread('pout.tif')); subplot(2,4,1); imshow(im);title('原图像'); [h,w]=size(im); newimage1=zeros(h,w); newimage2=zeros(h,w); newimage3=im;
% 区间端点1
a=0.2;
b=0.5;
c=0.1;
d=0.9;
for x=1:w
for y=1:h
if im(y,x)<a
newimage1(y,x)=im(y,x)c/a;
elseif im(y,x)<b
newimage1(y,x)=(im(y,x)-a)(d-c)/(b-a)+c;%分三段线性变换
else
newimage1(y,x)=(im(y,x)-b)(1-d)/(1-b)+d;
end
if im(y,x)>a&&im(y,x)<b
newimage3(y,x)=(im(y,x)-a)(d-c)/(b-a)+c;%高低端灰度变换
end
end
end
newimage2=imadjust(im, [0.2 0.8], []);%截取式灰度变换
subplot(2,4,2);
imshow(newimage1);title('分段线性变换图像1');
subplot(2,4,3);
imshow(newimage3);title('高低端灰度变换图像1');
subplot(2,4,4);
imshow(newimage2);title('截取式灰度变换图像1');
subplot(2,4,5);
imhist(im);title('原图像直方图');
subplot(2,4,6);
imhist(newimage1);title('分段线性变换直方图1');
subplot(2,4,7);
imhist(newimage3);title('高低端灰度变换直方图1');
subplot(2,4,8);
imhist(newimage2);title('截取式灰度变换直方图1');
% 区间端点2
a=0.2;
b=0.5;
c=0.4;
d=0.6;
for x=1:w
for y=1:h
if im(y,x)<a
newimage1(y,x)=im(y,x)c/a;
elseif im(y,x)<b
newimage1(y,x)=(im(y,x)-a)(d-c)/(b-a)+c;%分三段线性变换
else
newimage1(y,x)=(im(y,x)-b)(1-d)/(1-b)+d;
end
if im(y,x)>a&&im(y,x)<b
newimage3(y,x)=(im(y,x)-a)(d-c)/(b-a)+c;%高低端灰度变换
end
end
end
newimage2=imadjust(im, [0.2 0.8], []);%截取式灰度变换
subplot(2,4,10);
imshow(newimage1);title('分段线性变换图像2');
subplot(2,4,11);
imshow(newimage3);title('高低端灰度变换图像2');
subplot(2,4,12);
imshow(newimage2);title('截取式灰度变换图像2');
subplot(2,4,9);
imhist(im);title('原图像直方图');
subplot(2,4,13);
imhist(newimage1);title('分段线性变换直方图2');
subplot(2,4,14);
imhist(newimage3);title('高低端灰度变换直方图2');
subplot(2,4,15);
imhist(newimage2);title('截取式灰度变换直方图2');
% 区间端点3
a=0.3;
b=0.7;
c=0.2;
d=0.8;
for x=1:w
for y=1:h
if im(y,x)<a
newimage1(y,x)=im(y,x)c/a;
elseif im(y,x)<b
newimage1(y,x)=(im(y,x)-a)(d-c)/(b-a)+c;%分三段线性变换
else
newimage1(y,x)=(im(y,x)-b)(1-d)/(1-b)+d;
end
if im(y,x)>a&&im(y,x)<b
newimage3(y,x)=(im(y,x)-a)(d-c)/(b-a)+c;%高低端灰度变换
end
end
end
newimage2=imadjust(im, [0.2 0.8], []);%截取式灰度变换
subplot(2,4,17);
imshow(newimage1);title('分段线性变换图像3');
subplot(2,4,18);
imshow(newimage3);title('高低端灰度变换图像3');
subplot(2,4,16);
imhist(im);title('原图像直方图');
subplot(2,4,19);
imhist(newimage1);title('分段线性变换直方图3');
subplot(2,4,20);
imhist(newimage3);title('高低端灰度变换直方图3');
subplot(2,4,21);
imhist(newimage2);title('截取式灰度变换直方图3')
原文地址: https://www.cveoy.top/t/topic/d5bv 著作权归作者所有。请勿转载和采集!