MATLAB--数字图像处理 图像的收缩
图像的收缩
定义:
图像的收缩通俗一点就是我们常说的放大、缩写,在数字图像处理中,就是指像素的增加与减少。比如22的图像,有4个像素,放大两倍,那么就有44=16个像素。
那么怎么对图像进行收缩呢?
这里拿放大举例:放大二倍的图像就是图片的width、height都扩大为原来的两倍,也就是像素总数为原来的四倍。那么怎么在保证图片内容不变的情况下增加像素呢?这个也简单,举个例子,比如一个红色的圆原来是4个像素(4个相同的像素)来表示,二倍后的圆那么就是用16个像素(也是相同的)来表示,通俗来说,就是用更多的像素来表示同一种图形。原来需要4个,那么现在就需要16个。
当然,随机图像上面一个片段是由多个不同的像素表示,那么怎么增加像素个数,同时图形还不变化呢?这个就要用插值来计算了。举个例子,一段上坡路,现在要把它增长(在中间增长),那么肯定是在中间填入和两侧差不多的高度,使得原来的坡面同样也是连续的,保持原来的连续性。所以插值的目的是:通过填充像素,保持原图像的一致,和高数上变化后保持连续性相似。下图是插值法的说明:
该算法的伪代码:
我的理解:
比如原图的大小为300400,放大两倍,变成600800;原图上(1,2)的点在放大图的点为(2,4)。这个应该比较好理解。
编程的时候,我们是先构造出放大图像的空矩阵,再依次填值。这就要求我们要能够在已知知道放大图像中的一个点坐标,计算出原图的坐标,然后把原图的坐标赋值给新点。
这里运用比例思想,比如x轴上,放大图为2,它占总长600的2/600,那么原图的x坐标同样也占x轴的2/600,计算出来为1.
假设(x1,y1)为放大图像的值,(x0,y0)为原图的值,m,n为原图的横纵长度,rm,rn为放大图的横纵长度。
有以下关系:
x1/rm=x0/m y1/rn=y0/n
可以推导出:
x0=x1m/rm y0=y1n/rn
最后再利用双线性插值法插值即可。
这里代码是(其实就是先分别求出周围4个点,利用不同的取值函数就行,再计算):
rt(i,j,:)=t(floor(x),floor(y),:)*(1-u)*(1-v)+t(floor(x),ceil(y),:)*(1-u)*v+t(ceil(x),ceil(y),:)*(u)*(1-v)+t(ceil(x),ceil(y),:)*u*v;
全部代码:
t=imread('a1.jpg');
[m,n,dep]=size(t);
%自定义长 宽
rm=1400;
rn=822;%构造新矩阵 存储收缩后的图片
rt=zeros(rm,rn,dep);for i=1:rm
for j=1:rn
%坐标转换
x=i*m/rm;
y=j*n/rn;
%求出偏移量
u=x-floor(x);
v=y-floor(y);
%边缘处理
if x<1
x=1;
end
if y<1
y=1;
end
%双线性插值
rt(i,j,:)=t(floor(x),floor(y),:)*(1-u)*(1-v)+t(floor(x),ceil(y),:)*(1-u)*v+t(ceil(x),ceil(y),:)*(u)*(1-v)+t(ceil(x),ceil(y),:)*u*v;
end
endimshow(t);title('原图');
figure;imshow(uint8(rt));title('加倍后的图片');
MATLAB--数字图像处理 图像的收缩相关推荐
- Matlab数字图像处理——图像的空间变换
Matlab空间变换函数 imtransform Matlab空间变换函数 imtransform 可以实现图像仿射变换(如 平移.旋转.剪切.缩放).投影变换, 该函数可与 maketform 配合 ...
- matlab数字图像处理——图像的读写,灰度、二值图像
一.实验目的 1.结合数字图像处理的知识,直观感受图像处理的基本实现过程 2.熟悉MATLAB工具的使用 3.了解图像的读写和显示 二.实验内容 实验内容一:图像读取 (1)利用编程实现读取图像 利用 ...
- Matlab数字图像处理——图像处理工具箱Image Processing Toolbox
Image Processing Toolbox 图像处理工具箱包含的功能: 图像的读取和保存 图像的显示 创建GUI 图像的几何变换 图像滤波器设计及线性滤波 形态学图像处理 图像域变换 图像增强 ...
- Matlab数字图像处理——图像文件的读取
文章目录 一.Matlab中获取图像信息的函数 imfinfo 二.Matlab读取图像文件的函数 imread 三.Matlab保存图像文件的函数 imwrite 完整目录 一.Matlab中获取图 ...
- matlab 求其骨架,数字图像处理图像的骨架生成和提取(Matlab)三种方法
[实例简介] 数字图像处理图像的骨架生成和提取(Matlab),有三种方法,推荐给大家! [实例截图] [核心代码] Programe ├── Programe1 │ ├── 00.JPG │ ...
- matlab图像低通滤波器 实验报告,基于matlab数字图像处理之低通滤波器
<基于matlab数字图像处理之低通滤波器>由会员分享,可在线阅读,更多相关<基于matlab数字图像处理之低通滤波器(6页珍藏版)>请在人人文库网上搜索. 1.实践一:理想低 ...
- 《精通Matlab数字图像处理与识别》一6.2 傅立叶变换基础知识
本节书摘来自异步社区<精通Matlab数字图像处理与识别>一书中的第6章,第6.2节,作者 张铮 , 倪红霞 , 苑春苗 , 杨立红,更多章节内容可以访问云栖社区"异步社区&qu ...
- matlab fspeical,MATLAB数字图像处理.doc
MATLAB数字图像处理 MATLAB常用图像操作 转换图像类型 例1.对一幅图像进行二值化处理,代码及结果如下: load trees BW=im2bw(X,map,0.4); imshow(X,m ...
- matlab数字图像处理课程设计报告,数字图像处理初步-实验1
MATLAB数字图像处理初步 通过实验对MatLab软件的基本使用基本的了解,学会使用MatLab软件来读取一个特定格式的图像,并通过相关的命令语句对图像进行格式转换.图像压缩.二值化等的处理,掌握利 ...
- matlab对于处理数字图像的优点,学习MATLAB数字图像处理经验谈
学习MATLAB数字图像处理经验谈 学习数字图像处理经验谈 (赵小川) 一.面向应用:层层分解.抓住要点 我们学习数字图像处理的最终目的还是应用,不管是用它来研制产品还是研发项目抑或是研究课题,都要用 ...
最新文章
- 一个阿里P7的自白:一念之差,我差点转了产品
- MySQL高级 - 查询缓存 - 开启查询缓存
- OSChina 周三乱弹 —— 爸爸说,这个是从他硬盘里掉出来的
- Servlet的入门
- 计算机趣味知识竞赛策划书,计算机趣味知识竞赛活动策划书.doc
- POJ 3687 逆序拓扑
- Java基础学习(3)-泛型
- VC编程-预编译头文件(precompiled header)
- 计算机中丢失msvcp120.dll是什么意思,win7系统玩游戏提示“msvcp120.dll丢失”怎么修复...
- UNI-APP 生成APP如何获取应用签名和应用包名称
- codewars题目
- python中hub_Python中文社区名称的统一
- 人生的意义是通过努力活得更好
- uni-app开发的h5,使用微信授权登录(前置条件+具体代码)
- 中关村十大AI研究院|盘点
- MVC、MVP、MVI、MVVM 和 VIPER 设计模式
- 功能测试与抓包工具Fiddler(http与fiddler)
- java 新浪 发送邮件_发邮件时终于可以通过sina的smtp验证了
- 如何让思路更清晰?simplemind for Mac思维导图来帮忙
- 没有伞的孩子,必须努力奔跑!