上次讲了数字图像处理的一题,今天再贴一题

Geometric transform (test image: fig3.tif)

Develope geometric transform program that will rotate, translate, and scale an imageby specified amounts, using the nearest neighbor and bilinear interpolationmethods, respectively.

背景

在对图像进行空间变换的过程中,典型的情况是在对图像进行放大,旋转处理的时候,图像会出现失真的现象。这是由于在变换之后的图像中,存在着一些变换之前的图像中没有的像素位置。处理这一问题的方法被称为图像灰度级插值。常用的插值方式有三种:最近邻域插值、双线性插值、双三次插值。理论上来讲,最近邻域插值的效果最差,双三次插值的效果最好,双线性插值的效果介于两者之间。不过对于要求不是非常严格的图像插值而言,使用双线性插值通常就足够了。

最近领域算法Matlab代码

sourcePic=imread('fig3.tif');
%以下为了彩色图像
%[m,n,o]=size(sourcePic);
%grayPic=rgb2gray(sourcePic);
grayPic=sourcePic;
[m,n]=size(grayPic);%比例系数为0.2-5.0
K = str2double(inputdlg('请输入比例系数(0.2 - 5.0)', '输入比例系数', 1, {'0.5'}));%验证范围
if (K < 0.2) && (K > 5.0)errordlg('比例系数不在0.2 - 5.0范围内', '错误');error('请输入比例系数(0.2 - 5.0)');
endfigure;
imshow(grayPic);width = K * m;
height = K * n;
resultPic = uint8(zeros(width,height));widthScale = m/width;
heightScale = n/height;for x = 5:width - 5                           for y = 5:height - 5xx = x * widthScale;                    yy = y * heightScale;if (xx/double(uint16(xx)) == 1.0) && (yy/double(uint16(yy)) == 1.0)       % if xx and yy is integer,then J(x,y) <- I(x,y)resultPic(x,y) = grayPic(int16(xx),int16(yy));else                                     % xx or yy is not integera = double(round(xx));               % (a,b) is the base-dotb = double(round(yy));resultPic(x,y) = grayPic(a,b);                     % calculate J(x,y)endend
endfigure;
rotate(resultPic,-20);
imshow(resultPic);

双线性插值Matlab算法

sourcePic=imread('fig3.tif');
%以下为了彩色图像
%[m,n,o]=size(sourcePic);
%grayPic=rgb2gray(sourcePic);
grayPic=sourcePic;
[m,n]=size(grayPic);%比例系数为0.2-5.0
K = str2double(inputdlg('请输入比例系数(0.2 - 5.0)', '输入比例系数', 1, {'0.5'}));%验证范围
if (K < 0.2) or (K > 5.0)errordlg('比例系数不在0.2 - 5.0范围内', '错误');error('请输入比例系数(0.2 - 5.0)');
endfigure;
imshow(grayPic);%输出图片长宽
width = K * m;
height = K * n;
resultPic = uint8(zeros(width,height));widthScale = n/width;
heightScale = m/height;for x = 5:width-5                             for y = 5:height-5xx = x * widthScale;                    yy = y * heightScale;if (xx/double(uint16(xx)) == 1.0) && (yy/double(uint16(yy)) == 1.0)
% if xx and yy is integer,then J(x,y) <- I(x,y)resultPic(x,y) = grayPic(int16(xx),int16(yy));else
% xx or yy is not integera = double(uint16(xx));
% (a,b) is the base-dotb = double(uint16(yy));x11 = double(grayPic(a,b));
% x11 <- I(a,b)x12 = double(grayPic(a,b+1));
% x12 <- I(a,b+1)x21 = double(grayPic(a+1,b));
% x21 <- I(a+1,b)x22 = double(grayPic(a+1,b+1));
% x22 <- I(a+1,b+1)          resultPic(x,y) = uint8( (b+1-yy) * ((xx-a)*x21 + (a+1-xx)*x11) + (yy-b) * ((xx-a)*x22 +(a+1-xx) * x12) );endend
endfigure;
resultPic = imrotate(resultPic,-20);
imshow(resultPic);

效果如下

最近领域算法放大2倍并顺时针旋转20度

双线性插值算法放大2倍并顺时针旋转20度

体会

该实验表明双线性插值得到的图像效果是比较好的。能够避免采用最近领域插值方式时可能存在的图像模糊、块状失真等问题。但双线性插值也存在问题,在放大倍数比较高的时候,图像失真将会比较严重,此时应该考虑使用更高阶的插值算法。

数字图像处理--空间变换相关推荐

  1. 数字图像处理-空间域处理-灰度变换-基本灰度变换函数(反转变换、对数变换、伽马变换和分段线性变换)

    数字图像处理-空间域处理-灰度变换-基本灰度变换函数(反转变换.对数变换.伽马变换和分段线性变换) 空间域处理是直接对像素进行操作的方法,这是相对于频率域处理而言的.空间域处理主要分为两大类:灰度变换 ...

  2. 数字图像处理—亮度变换与空间滤波—亮度变换函数

    数字图像处理-亮度变换与空间滤波-亮度变换函数 参考资料:<数字图像处理>,仅供学习参考. 亮度变换函数仅取决于亮度的值,与像素位置无关,所以亮度变换函数通常可写成如下形式: s=T(r) ...

  3. 数字图像处理-空间域图像增强(一)(图像反转,对数变换,幂次变换、分段线性变换)

    空间域增强的第一部分:图像反转,对数变换,幂次变换.分段线性变换 (s:现点值,r: 原点值) 图像反转: 这个无需多说,就是把黑变白,白变黑,拿八位灰度图像来说 表达式:s=255-r 作用:看清暗 ...

  4. 数字图像处理--空间滤波器

    前面提到,我们可以用平均或加权平均来降低噪声,以增强图像.前面我们是对像素点的周边8领域进行的操作,要是我们想对周边更多领域进行操作呢?如果我们想要调整加权的权重值呢? 那么用前2篇文章中的方法显然是 ...

  5. 数字图像处理 空间域高斯低通滤波 MATLAB实验

    一.原理_空间域高斯低通滤波 高斯低通滤波是一种使用的去噪滤波,可用于去除高斯噪声,且几乎没有振铃现象. 二.步骤 (1)读入原图像lena.bmp并显示: (2)对原图像分别添加高斯噪声,并显示加噪 ...

  6. 数字图像处理 空间域锐化 MATLAB实验

    一.原理_空间域锐化 设图像为 f(x,y) , Roberts算子的定义式为: 其对应的模板为: Prewitt算子的定义式为: 其中, 其对应的模板为: Sobel算子的定义式为: 其中, 其对应 ...

  7. 数字图像处理 空间域平滑 MATLAB实验

    一.原理_均值滤波 设加噪图像为 f(x,y) ,经均值滤波处理后的图像为g(x,y) ,则: 式中, S是(x,y)像素点的邻域,K是S内的像素数. 最典型的S为3X3邻域,可用模板形式表示为: 这 ...

  8. Matlab数字图像处理——图像的空间变换

    Matlab空间变换函数 imtransform Matlab空间变换函数 imtransform 可以实现图像仿射变换(如 平移.旋转.剪切.缩放).投影变换, 该函数可与 maketform 配合 ...

  9. matlab 霍特林变换,数字图像处理(第3版面向CS2013计算机专业规划教材)

    导语 内容提要 姚敏编著的<数字图像处理(第3版面向CS2013计算机专业规划教材)>详细介绍了数字图像处理的基本理论.主要技术和最新进展.全书共分13章,内容主要包括图像获取.图像变换. ...

最新文章

  1. 在Ring3上实现文件碎甲(解锁)功能
  2. tkinter 菜单添加事件_tkinter学习教程(七)
  3. ssh免密登录(普通用户和root用户)
  4. DAG的最小路径覆盖和二分图的最大匹配
  5. [js] 你是如何比较js函数的执行速度的?
  6. 《C#与.net高级编程》——第一支柱:C#的封装
  7. Android中Adapter之BaseAdapter使用
  8. Android开发史上最全笔试面试题
  9. 分形理论在图像处理中的应用研究(综述)
  10. T5: Linux查看cpu信息,是否支持avx2指令集
  11. 懒羊羊的作业:看过国产动画片的同学都知道,懒羊羊是一只非常懒的羊,整天除了吃就是睡,根本没有时间做作业。明天就是周一了,村长慢羊羊留的作业:把 n 个整数从大到小排序,它还没开始写...
  12. vue使用provide / inject 组合刷新页面+单独组件刷新
  13. 成都短期计算机python培训
  14. credssp(credssp加密数据库修正 server2016)
  15. BlackJack--21点扑克游戏Java实现
  16. 点云配准2:icp算法在PCL1.10.0上的实现+源码解析
  17. Unity背景音乐控制
  18. 电脑的ODBC数据源里面没有Microsoft Access Driver(*.mdb),并且已经装上了microsoft office 2003
  19. 数据读取速度达1.5G/s,UFS 2.1存储技术曝光
  20. Broadcast Receiver

热门文章

  1. 关于MLPerf的一些调查
  2. 全返模式是怎样玩的?解析购盈利模式
  3. 可用于飞书上的机器人上线啦
  4. 2022年武汉市经开区企业研发费用投入奖励补贴政策申报条件以及奖补标准!
  5. A Zealer:王自如
  6. 嵌入式uboot移植之三星官方uboot开始移植
  7. LeetCode 805数组切割题目
  8. 物联网应用网站——设计报告
  9. 20162312Java结对编程之挑战出题
  10. eap wifi 证书_如何手动连接802.1x EAP证书加密WIFI