Matlab编程实现图像放大
Matlab编程实现图像放大
这些代码是根据冈萨雷斯的《数字图像处理》(第三版) 里的第二章的2.6.5阐述的原理编写的,空间变换用的是反向映射,插值方法用的是双线性插值。
PS:这是我?第一次写博客,排版不美观还请见谅!
初学数字图像处理,觉得还挺有趣的,所以我才想写下这篇博客,如果能帮到大家真是太好了!!!
注意: 这里处理的图像是灰度图像,若处理彩色图像,输出图像会变成灰度图像!!!
由于是原理性编程,不同于一般的直接使用matlab自带函数处理图像,所以运行耗费的时间比较长,但对于帮助理解图像放大的原理可以起到很好的作用?
流程图如下:
代码如下:
% 首先读入需要放大的灰度图像
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编程实现图像放大相关推荐
- 用Matlab编程实现图像的傅立叶变换和逆变换并显示出来
用Matlab编程实现图像的傅立叶变换和逆变换并显示出来 % 用Matlab编程实现图像的傅立叶变换并显示出来 % 可进行傅立叶变换和逆变换恢复 clear all close all clc I=i ...
- Matlab编程实现图像滤镜效果(浮雕、怀旧色、连环画、羽化、素描、强光等)
Matlab编程实现图像滤镜效果 实验的目的是按照PhotoShop中实现滤镜效果的步骤进行matlab程序编码,最后实现相应的滤镜效果.主要包含的滤镜效果有:浮雕效果.怀旧色风格.连环画效果.交叉冲 ...
- 图片缩放 算法 matlab,图像放大算法总结及MATLAB源程序.doc
图像放大算法总结及MATLAB源程序 1,插值算法(3种): (1)最邻近插值(近邻取样法): 最近插值的的思想很简单就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色.可见,最邻近插 ...
- idft重建图像 matlab_利用 MATLAB 编程,打开一幅图像,对其进行 DFT 变换,并置其不同区域内的系数为零,进行 IDFT ,观察其输出效果。_学小易找答案...
[连线题]请对正确的快键键连线 [判断题]板书是指教师在课堂黑板或白板上书写,将教学内容形象.直观.简洁地传授给学生.清晰.流畅.快速的粉笔书写是课堂板书的基本功. [其它]利用 MATLAB 编程, ...
- MATLAB显函数作图 参数方程作图 极坐标方程作图绘图实例 用 Matlab 绘制高颜值函数图像 放大看告别浓浓锯齿风
1.1 显函数作图 1.2 参数方程作图 1.3 极坐标方程作图 1.1 显函数作图 图1. 图2. % Eg001 % fplot 用法 clf x = linspace(-6,6,10 ...
- 图像的读取 matlab,Matlab编程环境下图像的读取
<Matlab编程环境下图像的读取>由会员分享,可在线阅读,更多相关<Matlab编程环境下图像的读取(7页珍藏版)>请在人人文库网上搜索. 1.实验一 Matlab编程环境下 ...
- 基于matlab编程实现SAR图像多视处理
目录 一.概念 二.技术流程 2.1 第一种方法 2.2 第二种方法 三.matlab编程 3.1 第一种方法部分代码 3.2 第二种方法部分代码 摘要: 本博客讲解SAR图像多视处理原理和方法,并用 ...
- Matlab 保持图像矩阵大小不变对图像放大和缩小
效果如图所示: Matlab里的imresize函数可以对图像放大和缩小,但这同时也会改变图像矩阵的大小,如果想要上图所示的结果,需要再进行一些处理,处理代码如下所示. clc close all;% ...
- 互信息的数学解释以及matlab编程
1.互信息 互信息是信息论中的一个基本概念,通常用于描述两个系统间的统计相关性,或者是一个系统中所包含另一个系统中信息的多少. 引入互信息对图像进行配准是因为:不需要假定两幅图像灰度的对应关系,不需要 ...
- Matlab编程学习笔记【待续】
最近想用Matlab进行数据分析,算法性能测试,平时由于用的是C.C++,因此很多习惯都一时改不了,这里自己列出来一些Matlab中明显不同的地方. 矩阵单元元素访问方式:A(1,2)---A[1][ ...
最新文章
- 例5.12 输入一串字符,字符个数不超过100,且以.结束。 (信息学奥赛一本通)...
- Python应用实战案例-Python协程管理精讲万字长文(建议收藏)
- datagrid 什么时候结束编辑_孕吐到底什么时候结束
- linux系统在虚拟机中迁移的技术难点
- java 类集合_java集合类详解
- SUSE,为企业云原生打造多模平台
- mysql删除一个月前数据_如何在数据库中始终保持一个月的数据,自动删除一个月之前的记录?...
- HDU 4380 Farmer Greedy 计算几何+bitset
- Go语言的线程模型-Goroutine机制
- CSS3中的unicode字符编码,来添加图标
- 倍福---Profinet主从通信
- 记录一次大创项目配置服务器的心得
- 无心剑英译秦观《鹊桥仙》
- 将网易博客搬家迁移至CSDN指南:163博客关闭前的备份导出与迁移方法
- 远程计算机IP地址如何获取,获取远程主机的IP地址
- platEMO里多目标进化算法对应的参考文献
- 网站突然无法访问解决方案
- Java 随机数生成器 Random SecureRandom 原理分析
- 语义网知识表示方法:RDF,RDFS与OWL
- [AHK]F4Menu