实验题目:
根据下图参考数据和图像,编程实现数字图像的对比度拉伸。
实验分析:
根据上图,可得:我们只要把图形中灰度值为28-75的像素点修改灰度值即可以完成本次实验。
可以先找出28,75的纵坐标,根据两点式求出该范围内的直线方程。
如设两点坐标为(x0,y1),(x1,y1),则斜率为(y1-y0)/(x1-x0)。
实验程序: lab1.m
function lab1(addr,x1,y1,x2,y2)
%功能:完成实验一,灰度拉伸处理
% addr 为要处理的图片的文件名,默认为images\sy1.jpg
% x1,y1,x2,y2 为拉伸处理的线段端点坐标,当参数小于5个时
% 这些坐标均采用默认值,可以直接按 F5 运行。
if nargin<1
addr='images\sy1.jpg';
end
if nargin<5
x1=28;y1=28;
x2=75;y2=255;
end
if x1==x2
display('x1、x2不能相同,退出程序');
return ;
end
I=imread(addr);
[r,c,n]=size(I);
k=(y1-y2)/(x1-x2);
b=y1-k*x1;
if n>1
I2=rgb2gray(I);
else I2=I;
end
I2=double(I2);
for x=1:r
for y=1:c
tmp=I2(x,y);
if tmp>=x1 && tmp<=x2
I2(x,y)=k*tmp+b;
end
end
end
subplot(1,2,1);imshow(I);title('original image ');
subplot(1,2,2);imshow(I2,[]);title('image after modification');