MATLAB基础图形处理实现图形通道转换&灰度化&旋转缩放镜像拼接

%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()的括号里复制进图片所在的目录

%%如图所示左起第四个图标

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是MATLAB代码实现图像平移、旋转缩放镜像的功能: 1. 图像平移 ```matlab % 读取图像 img = imread('test.jpg'); % 图像平移 tx = 50; % x轴平移50个像素 ty = 70; % y轴平移70个像素 tform = affine2d([1 0 0; 0 1 0; tx ty 1]); % 平移变换矩阵 img_trans = imwarp(img, tform); % 进行平移 % 显示图像 subplot(1, 2, 1), imshow(img), title('原图'); subplot(1, 2, 2), imshow(img_trans), title('平移后的图'); ``` 2. 图像旋转 ```matlab % 读取图像 img = imread('test.jpg'); % 图像旋转 theta = 30; % 旋转角度为30度 tform = affine2d([cosd(theta) -sind(theta) 0; sind(theta) cosd(theta) 0; 0 0 1]); % 旋转变换矩阵 img_trans = imwarp(img, tform); % 进行旋转 % 显示图像 subplot(1, 2, 1), imshow(img), title('原图'); subplot(1, 2, 2), imshow(img_trans), title('旋转后的图'); ``` 3. 图像缩放 ```matlab % 读取图像 img = imread('test.jpg'); % 图像缩放 sx = 1.5; % x轴缩放1.5倍 sy = 0.8; % y轴缩放0.8倍 tform = affine2d([sx 0 0; 0 sy 0; 0 0 1]); % 缩放变换矩阵 img_trans = imwarp(img, tform); % 进行缩放 % 显示图像 subplot(1, 2, 1), imshow(img), title('原图'); subplot(1, 2, 2), imshow(img_trans), title('缩放后的图'); ``` 4. 图像镜像 ```matlab % 读取图像 img = imread('test.jpg'); % 图像水平镜像 tform = affine2d([-1 0 0; 0 1 0; 0 0 1]); % 水平镜像变换矩阵 img_trans = imwarp(img, tform); % 进行水平镜像 % 显示图像 subplot(2, 2, 1), imshow(img), title('原图'); subplot(2, 2, 2), imshow(img_trans), title('水平镜像'); % 图像垂直镜像 tform = affine2d([1 0 0; 0 -1 0; 0 0 1]); % 垂直镜像变换矩阵 img_trans = imwarp(img, tform); % 进行垂直镜像 % 显示图像 subplot(2, 2, 3), imshow(img), title('原图'); subplot(2, 2, 4), imshow(img_trans), title('垂直镜像'); ``` 以上代码中,`imread` 函数用于读取图像,`affine2d` 函数用于生成变换矩阵,`imwarp` 函数用于进行变换,`imshow` 函数用于显示图像,`title` 函数用于设置图像标题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值