matlab数字图像处理实验一:图像的读取显示存储、平移镜像放大缩小及旋转
灵活运用csdn来完成一下实验作业
- 题目一:读取、显示、存储
- 题目二:平移、镜像、放大、缩小、旋转
- 平移
- 镜像
- 放大
- 缩小
- 旋转
题目一:读取、显示、存储
读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分别显示RGB图像和灰度图像,注上文字标题,并将结果以文件形式存到磁盘上。
就灵活运用一下百度。
a=imread('01.jpg')
i=rgb2gray(a)
I=im2bw(i,0.5)
subplot(2,2,1);imshow(a);title('RGB'); %2x2的区域里的第一幅图,标题为RGB
subplot(2,2,2);imshow(i);title('Gray');
subplot(2,2,3);imshow(I);title('Binary')
imwrite(a,'01_rgb.jpg');imwrite(i,'01_gray.jpg');imwrite(I,'01_binary.jpg');
结果如下,哎就很烦不知道matlab装的时候出了什么问题不能显示中文,但是用英文看起来很牛,浅用一下。
题目二:平移、镜像、放大、缩小、旋转
对图像执行平移、镜像(水平镜像、垂直镜像)、放大、缩小及旋转操作,其中放大、旋转操作分别采用最近邻插值及双线性插值方法实现,要求根据算法自己编写代码实现,并分析两种插值方法的优缺点。
就matlab相关的真的很难找,是我搜索的关键词不对吗,csdn能不能努努力下次直接把我想要的给我推到最前面。
平移、镜像、缩小的参考了这里
巧妙地抄了过来,参考网址里的代码只能对灰度图像进行处理,我又灵活运用了百度,加了颜色的处理。用原本的代码平移有色图像(学名叫啥啊不知道)的话会变成三张图,就很牛嗷很牛。
最近邻插值和双线性插值的放大、旋转参考了这里
浅删了一下双三次的,其他照搬,自信即巅峰!
平移
src=imread('u.jpg');
[m,n,c]=size(src);
dst=zeros(m,n,c);
left=[1,0,-50;0,1,-50;0,0,1];
for i=1:mfor j=1:nt=left*[i;j;1];if t(1,1)<=m&&t(2,1)<=n&&t(1,1)>=1&&t(2,1)>=1dst(t(1,1),t(2,1),:)=src(i,j,:);endend
end
subplot(1,2,1),imshow(uint8(src)),title('Src');
subplot(1,2,2),imshow(uint8(dst)),title('Dst');
镜像
水平的:
src=imread('u.jpg');
[m,n,c]=size(src);
dst=zeros(m,n,c);
left=[1,0,0;0,-1,m;0,0,1];
for i=1:mfor j=1:nt=left*[i;j;1];if t(1,1)<=m&&t(2,1)<=n&&t(1,1)>=1&&t(2,1)>=1dst(t(1,1),t(2,1),:)=src(i,j,:);endend
end
subplot(1,2,1),imshow(uint8(src)),title('Origin');
subplot(1,2,2),imshow(uint8(dst)),title('Mirror Horizontally');
垂直的:
src=imread('u.jpg');
[m,n,c]=size(src);
dst=zeros(m,n,c);
left=[-1,0,n;0,1,0;0,0,1];
for i=1:mfor j=1:nt=left*[i;j;1];if t(1,1)<=m&&t(2,1)<=n&&t(1,1)>=1&&t(2,1)>=1dst(t(1,1),t(2,1),:)=src(i,j,:);endend
end
subplot(1,2,1),imshow(uint8(src)),title('Origin');
subplot(1,2,2),imshow(uint8(dst)),title('Mirror Vertically');
放大
srcimg=imread('u.jpg');
[srcWidth ,srcHeight,Color]=size(srcimg);
dstWidth=srcWidth+50*2;
dstHeight=srcHeight+50*2;
dstimg0=zeros(dstWidth,dstHeight,Color,class(srcimg));
dstimg1=zeros(dstWidth,dstHeight,Color,class(srcimg));
for i=1:dstWidth %最近邻插值for j=1:dstHeightfor n = 1:Colorsrc_i=i*(srcWidth/dstWidth);src_j=j*(srcHeight/dstHeight);dstimg0(i,j,n)=srcimg(round(src_i),round(src_j),n); endend
end
for i=1:dstWidth-1 %双线性插值for j=1:dstHeight-1for n = 1:Colorsrc_i=i*(srcWidth/dstWidth);src_j=j*(srcHeight/dstHeight);src_ii=fix(src_i);src_iu=src_i - src_ii; src_jj=fix(src_j);src_jv=src_j - src_jj;if src_ii == 0 src_ii=src_ii+1;endif src_jj ==0 src_jj=src_jj+1;enddstimg1(i,j,n)=(1-src_iu)*(1-src_jv)*srcimg(src_ii,src_jj,n)+(1-src_iu)*src_jv*srcimg(src_ii,src_jj+1,n)+src_iu*(1-src_jv)*srcimg(src_ii+1,src_jj,n) +src_iu*src_jv*srcimg(src_ii+1,src_jj+1,n);endend
end
figure,imshow(srcimg),title('Origin');
figure,imshow(uint8(dstimg0)),title('Nearest Neighbor');
figure,imshow(dstimg1),title('Bilinear Interpolation');
缩小
src=imread('u.jpg');
[m,n,c]=size(src);
dst=zeros(m,n,c,class(src));
left=[1/2,0,0;0,1/2,0;0,0,1];
for i=1:mfor j=1:nt=left*[i;j;1];if t(1,1)<=m&&t(2,1)<=n&&t(1,1)>=1&&t(2,1)>=1dst(round(t(1,1)),round(t(2,1)),:)=src(i,j,:);endend
end
subplot(1,2,1),imshow(uint8(src));subplot(1,2,2),imshow(uint8(dst));
旋转
srcimg=imread('u.jpg');
srcimg=double(srcimg);
[srcHeight,srcWidth,Color]=size(srcimg);
angle=pi/6;
dstWidth=srcWidth*cos(angle)+srcHeight*sin(angle);
dstHeight=srcWidth*sin(angle)+srcHeight*cos(angle);
dstHeight=ceil(dstHeight);
dstWidth=ceil(dstWidth);
u0=srcWidth*sin(angle);
T=[cos(angle),sin(angle);-sin(angle),cos(angle)];
dstimg0=zeros(dstWidth,dstHeight,Color,class(srcimg));
dstimg1=zeros(dstWidth,dstHeight,Color,class(srcimg));
for u=1:dstWidth %最近邻插值for v=1:dstHeightfor n=1:Colortem=T*([u;v]-[u0;0]); x=tem(1);y=tem(2); if x>=1 & x<=srcHeight & y>=1 & y<=srcWidth x_low=floor(x);x_up=ceil(x); y_low=floor(y);y_up=ceil(y); if (x-x_low)<=(x_up-x) x=x_low; elsex=x_up; endif (y-y_low)<=(y_up-y) y=y_low; elsey=y_up; endp1=srcimg(x_low,y_low,n); %双线性插值p2=srcimg(x_up,y_low,n); p3=srcimg(x_low,y_low,n); p4=srcimg(x_up,y_up,n); s=x-x_low; t=y-y_low; dstimg0(u,v,n)=srcimg(x,y,n); dstimg1(u,v,n)=(1-s)*(1-t)*p1+(1-s)*t*p3+(1-t)*s*p2+s*t*p4; endendend
end
subplot(2,2,1),imshow(uint8(srcimg)),title('Origin');
subplot(2,2,2),imshow(uint8(dstimg0)),title('Nearest Neighbor');
subplot(2,2,3),imshow(dstimg1/255),title('Bilinear Interpolation');
matlab数字图像处理实验一:图像的读取显示存储、平移镜像放大缩小及旋转相关推荐
- 【数字图像处理】BMP图片的读取显示存储(C语言实现)
(一)背景介绍 这段时间接到了一个新活,是关于图像处理的一个探地摄像头的项目.所以也差不多是时候开始学习一下数字图像处理的知识了.本来我们的方案是直接移植opencv,编译一下以后其他就基本啥都不用管 ...
- 图像处理边缘增强matlab,数字图像处理实验 matlab 图像增强 边缘检测 图像操作.doc...
数字图像处理实验 matlab 图像增强 边缘检测 图像操作 实验1 点运算和直方图处理 实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理. ...
- 数字图像处理matlab实验对图像复原,数字图像处理实验07图像的复原处理
数字图像处理实验 一.数字图像处理实验 实验七 图像的复原处理 一.实验目的 熟悉几种在实际应用中比较重要的图像复原技术,学会用MATLAB复原函数对退化图像进行复原处理. 二.实验内容 1.用点扩散 ...
- 数字图像处理实验七--图像压缩编码
数字图像处理实验七 (图像压缩编码) 实验内容: 基于游程编码的图像压缩 基于离散余弦变换的图像压缩 实验步骤: 使用给定的图像lena做实验,采用im2bw把灰度图像转换为二值图像,试计算二值化时阈 ...
- 数字图像处理实验四图像频域增强
一.实验目的 (1)了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学的图像增强的理论知识和相关算法. (2)熟练掌握低通.高通.带通.同态滤波器的使用方法,明确不同性质的滤波器对图像的影响 ...
- Matlab数字图像处理 实验3、图像边缘检测的计算机实现
子曰:桃李不言,下自成蹊. 图 像 边 缘 检 测 的 计 算 机 实 现 图像边缘检测的计算机实现 图像边缘检测的计算机实现 P a r t . 0 实 验 目 的 仅 限 于 学 习 交 流 Pa ...
- Matlab数字图像处理 实验1、数字图像的傅里叶变换
子曰:桃李不言,下自成蹊. 数字图像的傅里叶变换数字图像的傅里叶变换数字图像的傅里叶变换 Part.0实验目的仅限于学习交流Part.0 实验目的^{仅限于学习交流}Part.0实验目的仅限于学习交流 ...
- 计算压缩比的程序matlab,数字图像处理实验5 图像压缩
实验5 图像压缩 一.实验目的: 1.掌握图像压缩的原理--编码冗余,压缩比C R的计算等. 2.了解并掌握霍夫曼编码的原理.实现步骤. 3.掌握JPEG标准--通用的图像压缩/解压缩编码标准. 二. ...
- 数字图像处理实验八图像的傅里叶变换
自选一幅灰度图像,编写MATLAB程序,完成图像的傅里叶变换并显示图像傅里叶变换谱. 1.快速图像傅里叶变换函数 Y = fft2(X) 2.将图像频谱零频分量移动到图像频谱中心 Y = fftshi ...
- 数字图像处理 实验一 图像的基本运算
实验一 图像的基本运算 一.实验目的 (1)掌握点运算和代数运算的算法实现和概念 (2)掌握和几何运算的算法实现和概念 (2)掌握灰度变换和几何变换的基本方法 (3)理解图像灰度直方图的概念 二.实验 ...
最新文章
- 利用Python制作简单的小程序:IP查看器
- c语言孩子兄弟法存储一棵树,数据结构(C语言版)---树
- vue读取终端硬件信息_[提示]在macOS终端上查看硬件信息
- linux系统备份路径,linux系统备份恢复到本机或是别的机器上
- 【深度学习】——模型评估指标MAP计算实例计算
- 簇的局部变量中布尔类型_java基础2(变量、常量、数据类型)
- 一个USB HUB电路分享
- 我的世界java版和基岩版对比_基岩版Beta1.11.0.1发布
- php源码安装配置,php源码安装时configure配置参数 | 学步园
- jquery报变量没定义错误的原因
- C# 使用SFTP的上传下载文件时如何使用代理
- MultipleRegularExpressionAttribute MVC中扩展自定义验证规则
- linux挂载硬盘_玩客云刷机系统之挂载U盘/硬盘增加储存空间
- 数学建模应用系列之经济问题
- 软件测试的工作流程是什么
- 关于sql注入漏洞的挖掘及渗透工具简介
- 优化 | 线性化:两个0-1变量相乘的线性化
- java 判断当前时间节气,请问js获取阴历节气后根据节气判断春夏秋冬四季?该怎么写呢...
- 一阶微分方程的物理意义_微分方程和积分方程有哪些典型的物理意义?实际中哪个更常用?...
- 敏捷仪式感之:敏捷宣传栏