Matlab编程实现图像放大

这些代码是根据冈萨雷斯的《数字图像处理》(第三版) 里的第二章的2.6.5阐述的原理编写的,空间变换用的是反向映射,插值方法用的是双线性插值。
PS:这是我?第一次写博客,排版不美观还请见谅!
初学数字图像处理,觉得还挺有趣的,所以我才想写下这篇博客,如果能帮到大家真是太好了!!!

注意: 这里处理的图像是灰度图像,若处理彩色图像,输出图像会变成灰度图像!!!
由于是原理性编程,不同于一般的直接使用matlab自带函数处理图像,所以运行耗费的时间比较长,但对于帮助理解图像放大的原理可以起到很好的作用?

流程图如下:

Created with Raphaël 2.2.0开始读入图像并归一化定义放大倍数定义输出图像大小扫描图像,反向映射得(x,y)坐标在原图像内?坐标x或y是小数?进行双线性插值扫描完毕?显示图像结束直接赋予该坐标像素原图像的灰度值yesnoyesnoyesno

代码如下:

% 首先读入需要放大的灰度图像
I = imread('F:\数字图像处理\textT.tif');
I_in = im2double(I);    % 转化为double类型,并归一化
m = size(I_in,1);  % 获取原图像大小
n = size(I_in,2);% 放大tn倍,放大几倍修改tn值就好
tn = 2;
T = [tn,0,0;0,tn,0;0,0,1]; % 仿射矩阵T% 定义输出图像 I_out
I_out = ones(m*tn,n*tn);
for i = 1:m*tn       % 从图像的左上角开始遍历输出图像for j = 1:n*tn% 输出图像像素坐标反向映射得到输入图像像素坐标x和yz = [i,j,1]/T;x = z(1);y = z(2);% 下面判断反向映射得到的坐标(x, y)是否超出输入图像的大小,% if条件成立则没有超出,% 条件不成立则不进行任何操作,定义I_out时已经默认该点灰度为1if (x>=1 & y>=1) & (x<=m & y<=n)  % 然后再判断x或y是否为小数,if条件成立则是小数if (rem(x,1))||(rem(y,1))% 坐标为小数则需要插值% 先获取该小数坐标(x, y)邻近的四个像素坐标 x0 = floor(x);x1 = ceil(x);y0 = floor(y);y1 = ceil(y);% 获取邻近坐标的灰度值a = I_in(x0,y0);b = I_in(x0,y1);c = I_in(x1,y0);d = I_in(x1,y1);% 双线性内插g1 = a + (x-x0) * (c - a);g2 = b + (x-x0) * (d - b);I_out(i,j) = g1 + (y - y0) * (g2 - g1);     else    % x和y都为整数则直接赋予原图像的灰度值I_out(i,j) = I_in(x,y);endendend
end% 显示原图像和放大后的输出图像
figure;imshow(I);
figure;imshow(I_out);

运行结果如下:

  • 输入图像如下:
  • 输出图像如下:

    这里图像被放大了2倍,可以看到输出图像的“T”形边缘被模糊了,这是插值的结果。
    下次有时间的话我会把旋转变换和偏移变换的代码也写出来,欢迎大家捧场?!!!

Matlab编程实现图像放大相关推荐

  1. 用Matlab编程实现图像的傅立叶变换和逆变换并显示出来

    用Matlab编程实现图像的傅立叶变换和逆变换并显示出来 % 用Matlab编程实现图像的傅立叶变换并显示出来 % 可进行傅立叶变换和逆变换恢复 clear all close all clc I=i ...

  2. Matlab编程实现图像滤镜效果(浮雕、怀旧色、连环画、羽化、素描、强光等)

    Matlab编程实现图像滤镜效果 实验的目的是按照PhotoShop中实现滤镜效果的步骤进行matlab程序编码,最后实现相应的滤镜效果.主要包含的滤镜效果有:浮雕效果.怀旧色风格.连环画效果.交叉冲 ...

  3. 图片缩放 算法 matlab,图像放大算法总结及MATLAB源程序.doc

    图像放大算法总结及MATLAB源程序 1,插值算法(3种): (1)最邻近插值(近邻取样法): 最近插值的的思想很简单就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色.可见,最邻近插 ...

  4. idft重建图像 matlab_利用 MATLAB 编程,打开一幅图像,对其进行 DFT 变换,并置其不同区域内的系数为零,进行 IDFT ,观察其输出效果。_学小易找答案...

    [连线题]请对正确的快键键连线 [判断题]板书是指教师在课堂黑板或白板上书写,将教学内容形象.直观.简洁地传授给学生.清晰.流畅.快速的粉笔书写是课堂板书的基本功. [其它]利用 MATLAB 编程, ...

  5. MATLAB显函数作图 参数方程作图 极坐标方程作图绘图实例 用 Matlab 绘制高颜值函数图像 放大看告别浓浓锯齿风

    1.1  显函数作图 1.2  参数方程作图 1.3  极坐标方程作图 1.1  显函数作图 图1.   图2. % Eg001 % fplot 用法 clf x = linspace(-6,6,10 ...

  6. 图像的读取 matlab,Matlab编程环境下图像的读取

    <Matlab编程环境下图像的读取>由会员分享,可在线阅读,更多相关<Matlab编程环境下图像的读取(7页珍藏版)>请在人人文库网上搜索. 1.实验一 Matlab编程环境下 ...

  7. 基于matlab编程实现SAR图像多视处理

    目录 一.概念 二.技术流程 2.1 第一种方法 2.2 第二种方法 三.matlab编程 3.1 第一种方法部分代码 3.2 第二种方法部分代码 摘要: 本博客讲解SAR图像多视处理原理和方法,并用 ...

  8. Matlab 保持图像矩阵大小不变对图像放大和缩小

    效果如图所示: Matlab里的imresize函数可以对图像放大和缩小,但这同时也会改变图像矩阵的大小,如果想要上图所示的结果,需要再进行一些处理,处理代码如下所示. clc close all;% ...

  9. 互信息的数学解释以及matlab编程

    1.互信息 互信息是信息论中的一个基本概念,通常用于描述两个系统间的统计相关性,或者是一个系统中所包含另一个系统中信息的多少. 引入互信息对图像进行配准是因为:不需要假定两幅图像灰度的对应关系,不需要 ...

  10. Matlab编程学习笔记【待续】

    最近想用Matlab进行数据分析,算法性能测试,平时由于用的是C.C++,因此很多习惯都一时改不了,这里自己列出来一些Matlab中明显不同的地方. 矩阵单元元素访问方式:A(1,2)---A[1][ ...

最新文章

  1. 例5.12 输入一串字符,字符个数不超过100,且以.结束。 (信息学奥赛一本通)...
  2. Python应用实战案例-Python协程管理精讲万字长文(建议收藏)
  3. datagrid 什么时候结束编辑_孕吐到底什么时候结束
  4. linux系统在虚拟机中迁移的技术难点
  5. java 类集合_java集合类详解
  6. SUSE,为企业云原生打造多模平台
  7. mysql删除一个月前数据_如何在数据库中始终保持一个月的数据,自动删除一个月之前的记录?...
  8. HDU 4380 Farmer Greedy 计算几何+bitset
  9. Go语言的线程模型-Goroutine机制
  10. CSS3中的unicode字符编码,来添加图标
  11. 倍福---Profinet主从通信
  12. 记录一次大创项目配置服务器的心得
  13. 无心剑英译秦观《鹊桥仙》
  14. 将网易博客搬家迁移至CSDN指南:163博客关闭前的备份导出与迁移方法
  15. 远程计算机IP地址如何获取,获取远程主机的IP地址
  16. platEMO里多目标进化算法对应的参考文献
  17. 网站突然无法访问解决方案
  18. Java 随机数生成器 Random SecureRandom 原理分析
  19. 语义网知识表示方法:RDF,RDFS与OWL
  20. [AHK]F4Menu

热门文章

  1. 不经艰难困苦,何来玉汝于成
  2. 推荐五款好用的项目管理软件
  3. 使用RamDiskNT虚拟软盘后vmware无法识别
  4. linux安全-用户行为监控
  5. Java带宽限速器、Springboot限速器
  6. python multiprocessing dummy Pool 使用
  7. 用计算机绘制函数图像数学大师,用Excel来绘制数学中的函数图像
  8. jpa+hibernate整合达梦数据库(附源码)
  9. python中sample是什么意思_【后端开发】python中的sample什么意思
  10. 织梦建站教程,织梦安全问题解决,修改织梦URL命名规则