%practice,还是以彩色荷花图片lotus为例
%读入图片数据
Image1=imread('carphone.jpg');%图片1是原图,汽车与手机JPG格式的原图
%红绿通道互换
Image2=Image1;
Image2(:,:,1)=Image1(:,:,2);%图片二的红色通道替换成图片一的绿色通道
Image2(:,:,2)=Image1(:,:,1);%图片2的绿通道替换成图片一的宏通道
%这里的Image相当于C++里的temp临时变量,用于承载交换值,作为中转站
imshow(Image2);%显示转换好红绿通道的图片2
imwrite(Image2,'lotusChangeRG.jpg');%输出保存,命名意思为改变了红绿通道的lotus
%灰度化
gray=rgb2gray(Image1);%把彩色图转换为灰度图,利用函数
figure;%建立窗口
subplot(121),imshow(Image1),title('Orginal Image');%显示原始图像
subplot(122),imashow(gray),title('Gray Image');%窗口显示灰度图
imwrite(gray,'lotusGray.jpg');%输出灰度图并且保存
%图像旋转
Newgray1=imrotate(gray,15);
Newgray2=imrotate(gray,15,'bilinear');%bilinear利用双线性变换法,把下列S域的模拟滤波器转换为数字滤波器
figure;
subplot(121),imshow(Newgray1),title('旋转15°(最邻近插值)');
subplot(122),imshow(Newgray2),title('旋转15°(双线型插值)');
imwrite(Newgray1,'rotate1.ipg');
imwrite(Newgray2,'rotate2.jpg');
%图像缩放
Newgray3=imresize(gray,2.5,'nearst');%'nearst'最邻近插值
Newgray4=imresize(gray,2.5,'bilinear');%双线性插值
figure;
subplot(121),imshow(Newgray3),title('放大2.5倍(最邻近插值)');
subplot(122),imshow(Newgray4),title('放大2.5倍(双线性插值)');
imwrite(Newgray3,'scal1.jpg');
imwrite(Newgray4,'scal2.jpg');
%图像镜像与拼接
Image2=imread('lotus.bmp');%读入bmp格式的荷花图片
HImage=flip(Image2,2);%Flipdim(X,dim)函数是matlab中针对矩阵翻转变换的函数(此处每一列逆序)
%其中X表示一个矩阵,dim指定翻转方式,dim为1,表示每一列进行逆序排列
%2表示每一行进行逆序排列
%另外matlab还提供了左右、上下、以及旋转90度直接利用的函数,如下:
%左右翻转:fliplr(Image2)
%上下翻转:flipud(Image2)
%旋转九十度:rot90(Image2)
VImage=flip(Image2,1);%1表示行翻转
CImage=flip(HImage,1);%列翻转后的图片再进行 行翻转
[h w]=size(Image2);
NewImage=zeros(h*2,w*2,3);
%zeros(1,8)意思就是一个一行8列的零矩阵
%zeros(size(A)); % 生成一个与矩阵A的维度一致的零矩阵
%zeros(m, n, k, ...); % 生成一个m*n*k*...的零矩阵 ;
NewImage=[Image2 HImage;VImage CImage];
figure,imshow(NewImage);
imwrite(NewImage,'newlotus.jpg');
%%若出现以下情况,需要找到左侧有个向下绿色箭头的文件夹图标,导入想要加载的图片所在文件夹(至于图片,找个彩色的jpg格式图片和彩色bmp图片就好了)也可以在imread()的括号里复制进图片所在的目录
%%如图所示左起第四个图标