1.利用MATLAB,修改亮度、饱和度和色调数据后显示原始图像和处理后的图像。
Img=imread('image.jpeg');
hsv=rgb2hsv(Img);
hsv(:,:,1)=1.1*hsv(:,:,1);%调整色调
hsv(:,:,2)=0.8*hsv(:,:,2);%调整饱和度
hsv(:,:,3)=1.5*hsv(:,:,3);%调整亮度
result=hsv2rgb(hsv);
subplot(121),imshow(Img),title('原图像');
subplot(122),imshow(result),title('HSV反变换');
2.实现对彩色图像的直方图均衡化处理(不采用MATLAB中封装好的统计直方图及均衡化函数)。
%主函数
function coloraverage()
I=imread('hehua.jpg');
imshow(I);
I1=I(:,:,1);%提取红色分量
I2=I(:,:,2);%提取绿色分量
I3=I(:,:,3);%提取蓝色分量
I1=histogram(I1); %构造的函数
I2=histogram(I2);
I3=histogram(I3);
c=cat(3,I1,I2,I3); %cat用于构造多维数组
subplot(1,2,1);imshow(I),title('原图');
subplot(1,2,2);imshow(c),title('均衡化后图像');
%调用的(直方图均衡化)构造函数
function d=histogram(I)%构造histogram函数
J=I;
[m,n]=size(I); %确定矩阵大小
area=m*n;
a=zeros(1,256); %产生1*256的零矩阵a,用来存放原始图像各个灰度值的个数
b=zeros(1,256);
for i=1:m %记录各个灰度值的个数
for j=1:n
d=I(i,j)+1; %获取(i,j)位置的灰度值(注意:灰度值为0-255,对应矩阵的1-256)
a(1,d)=a(1,d)+1; %矩阵a上对应灰度值的计数+1
end
end
for i=1:256 %均衡化
sum=0;
for j=1:i
sum=sum+a(1,j);
end
b(1,i)=sum*255/area;
end
for i=1:m %用均衡化后的数据代替原位置的数据
for j=1:n
d=J(i,j)+1;
J(i,j)=b(1,d);
end
end
d=J;
3.一幅图像
,设置缩放比例
,采用双线性插值对其进行放大。(不采用MATLAB函数)
f=[1 4 7;2 5 8;3 6 9];
[h,w]=size(f);
kx=2.3;
ky=1.6;
i=ceil(ky*h);
j=ceil(kx*w);
for newx=1:j;
for newy=1:i;
oldx=(newx-1)/kx;
oldy=(newy-1)/ky;
x=floor(oldx)+1;
y=floor(oldy)+1;
a=oldx-floor(oldx);
b=oldy-floor(oldy);
if x<w && y<h
g(newy,newx)=f(y,x)+b*(f(y+1,x)-f(y,x))+a*(f(y+1,x)-f(y,x))+a*b*(f(y+1,x+1)+f(y,x)-f(y,x+1)-f(y+1,x));
elseif x>=w && y<h
g(newy,newx)=f(y,x)+b*(f(y+1,x)-f(y,x));
elseif x<w && y>=h
g(newy,newx)=f(y,x)+a*(f(y,x+1)-f(y,x));
else
g(newy,newx)=f(y,x);
end
end
end
4.将荷花图像采用MATLAB抠出,并改变荷花的颜色
Image=im2double(imread('hehua.jpg'));
subplot(1,2,1);imshow(Image);title('原图');
HSV=rgb2hsv(Image);h=HSV(:,:,1);S=HSV(:,:,2);
epslon=1/10;
pos=(h>14/48-epslon & h<1/4+epslon & S>1/4);
h(~pos)=h(~pos)*0.75;
HSV(:,:,1)=h;
result=hsv2rgb(HSV);
subplot(1,2,2);imshow(result);title('最终结果');
支持可以关注我哦,持续分享编写的代码。