Matlab——图像缩放(插值法)

实验内容:

    用双线性内插法实现位深度为8的灰度图像的缩放。

 

思路:

     输入原图像以及缩放后图像的像素要求(宽度*高度),处理后输出新图像。

    我是用matlab来实现scale(input_img,scale_size)函数的,输入图像路径以及要求实现的宽度scale_w和高度值scale_h即可。通过matlab把原图像转化为img矩阵,这样矩阵img(a, b)元素的值就是原图像高度为a,宽度为b处的像素值。

   设处理前后图像的宽度和高度分别为w、h,scale_w、scale_h。

    如上图所示,row对应的是高度,设为x轴;col对应的是宽度,设为y轴;value对应的是灰度值,设为z轴。

 

    通过缩放比例,可以求得新图像B在(i,j)处对应原图像的点为(x,y)(其中x= i*h/scale_h,y= j*w/scale_w)。

但是这两个值可能为浮点数,而像素中的位置是整数,所以这个点在原图像中对应的可能是“虚”点。所以,我们需

要根据找该“虚”点周围的四个点来进行双线性插值得到新图像的灰度值。我们应该取的是(x,y)邻近的四个像素

(x0,y0) 、(x0,y1) 、(x1,y0) 、(x1,y1),它们对应的灰度值为f(x0,y0) 、f(x0,y1)、 f(x1,y0)、 f(x1,y1)。

  

    先对x方向进行插值,再对y方向进行插值,计算如下:

    

    

    

 

    反过来,先对y方向:

    

    

    

 

    显然,邻近像素的x1-x0 = y1-y0 = 1
    整理式子得到:

 

    这里u、v分别是x、y的小数部分,即u = x - x0; v = y - y0

       要注意的是:上述公式img(a,b)中的a和b不能小于1,所以当x和y小于1时需要将其重新赋值为1。

 

代码:

function output_img = scale(input_img, scale_size)
%Input - input_img is a two-dimensional matrices storing image
%      - scale_size is a tuple of [width, height] defining the spatial resolution of output
%Output - output_img is the same as input_imgimg = imread(input_img); %读取输入图片的数据
[h,w] = size(img); %获取行和列,即原图的高度和宽度scale_w = scale_size(1); %根据输入获得缩放后的新宽度
scale_h = scale_size(2); %根据输入获得缩放后的新高度
output_img = zeros(scale_h, scale_w); %初始化for i = 1 : scale_h         %缩放后的图像的(i,j)位置对应原图的(x,y)for j = 1 : scale_wx = i * h / scale_h;y = j * w / scale_w;u = x - floor(x);v = y - floor(y); %取小数部分if x < 1           %边界处理x = 1;endif y < 1y = 1;end%用原图的四个真实像素点来双线性插值获得“虚”像素的像素值output_img(i, j) = img(floor(x), floor(y)) * (1-u) * (1-v) + ...img(floor(x), ceil(y)) * (1-u) * v + ...img(ceil(x), floor(y)) * u * (1-v) + ...img(ceil(x), ceil(y)) * u * v;end
endimwrite(uint8(output_img), '../output_img.png'); %保存处理后的图像
imshow(input_img); %显示原图
figure,imshow(uint8(output_img)) %显示处理后的图像

运行时若图片在代码上一级目录,则输入scale('../a.png', [450,300]);

 

效果图:

原图为384*256:

缩小成192*128:  

放大成450*300:

缩放成500*200:

 

//

 转载:https://blog.csdn.net/Stella_Chan/article/details/78025020?locationNum=5&fps=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

情感计算综述

来源&#xff1a;人机与认知实验室自然的齐一性指未检验过的物体将在某些相关的方面与我们已经检验过的同类物体相似。情感是人类智能的重要组成部分&#xff0c;是穿越理性的一把利器&#xff0c;然而&#xff0c;情感计算这一方向能否可行&#xff1f;如同形式化常识一样能否…

Matlab——对比度拉伸

1、代码如下&#xff1a; close all;clear all;clc; %关闭所有图形窗口&#xff0c;清除工作空间所有变量&#xff0c;清空命令行 Iimread(pout.tif); Jimadjust(I,[0.2 0.5],[0 1]);%将0.2-0.5之间的灰度扩展到整个0-1范围&#xff0c;这种处理 对于强调感兴趣灰度区非常有用…

形态学——腐蚀

1、基本概念 腐蚀 是一种消除连通域的边界点&#xff0c;使边界向内收缩的处理。 例如&#xff1a; 注&#xff1a;图像画面上边框处不能被结构元素覆盖的部分可以保持原来的值不变&#xff0c;也可以置为背景。 2、设计思想 设计一个结构元素&#xff0c;结构元素的原点定…

从现在到未来50年,传感器将如何改变世界?

来源&#xff1a;资本实验室2011年&#xff0c;网景公司创始人与风险投资家马克安德森提出了非常具有创见&#xff0c;而且已经成为现实的观点&#xff1a;“软件正在吞噬世界”。到今天&#xff0c;如果把句子中的“软件”替换为“传感器”&#xff0c;这一观点同样适用。自传…

开发过程中编写的一些批处理

1.BuildRelease.bat 用于不开启VS直接编译、部署、创建和恢复快照 WindowsPhone APP&#xff0c;注册WindowsPhone手机。 进行了编译和部署的效果&#xff1a; BuildRelease.bat 1 echo off2 pushd "%~dp0"3 title Build Release4 set folder%CD%5 set MSBUILD%windi…

形态学——膨胀

1、基本概念 膨胀是将与目标区域的背景点合并到该目标物中&#xff0c;使目标物边界向外部扩张的处理。 例如&#xff1a; 2、设计思想 设计一个结构元素&#xff0c;结构元素的原点定位在背景像素上&#xff0c;判断是否覆盖有目标点&#xff0c;来确定是否该点被膨胀为目标…

剖析20世纪未来出行 这些畅想21世纪能成吗?

来源&#xff1a;popsci编译&#xff1a; 网易智能 (乐邦)近年来有关飞行汽车、超级高铁、喷气背包、无人驾驶汽车等新型交通工具的报道一直不绝于耳&#xff0c;但目前这些领域的产品似乎都还算不上真正切实可行。说好的移动出行未来在哪里呢&#xff1f;人们梦寐以求的这些交…

图像分割——迭代式阈值分割

1、算法步骤&#xff1a; &#xff08;1&#xff09;预定义两阈值之差dt &#xff08;2&#xff09;选定初始阈值T0&#xff08;一般为图像的平均灰度&#xff09; &#xff08;3&#xff09;用T分割图像为G1、G2两组&#xff0c;G1由灰度值大于T的所有像素组成&#xff0c;…

第一本用机器生成的书籍由施普林格•自然出版

Lithium-Ion BatteriesA Machine-Generated Summary of Current Research来源&#xff1a;Springer丨公众号摘要&#xff1a;这本创新的原型书引人入胜地概述了锂离子电池的最新研究。与德国法兰克福大学应用计算语言学实验室合作开发的一种算法自动编写了这本书。施普林格•自…

根据文件扩展名获取系统图标

1 /// <summary>2 /// 根据文件后缀名获取系统图标。3 /// </summary>4 /// <param name"extension"></param>5 /// <returns></returns>6 public static ImageSource GetIconByExt…

2019全球AI人才分布图:美国占44%,中国人才净流入

来源&#xff1a;网络大数据人工智能技术正在快速发展&#xff0c;而各国对于AI人才的需求是没有止境的&#xff1a;大家都在培养和争夺人才上做文章。前不久&#xff0c;教育部批准了国内35所大学的人工智能本科专业;加拿大正希望通过“全球技能战略签证”吸引国外人才流入。今…

区域生长算法原理及MATLAB实现

1. 基于区域生长算法的图像分割原理 数字图像分割算法一般是基于灰度值的两个基本特性之一&#xff1a;不连续性和相似性。前一种性质的应用途径是基于图像灰度的不连续变化分割图像&#xff0c;比如图像的边缘。第二种性质的主要应用途径是依据实现指定的准则将图像分割为相似…

给初学者们讲解人工神经网络(ANN)

1. 介绍 这份教学包是针对那些对人工神经网络&#xff08;ANN&#xff09;没有接触过、基本上完全不懂的一批人做的一个简短入门级的介绍。我们首先简要的引入网络模型&#xff0c;然后才开始讲解ANN的相关术语。作为一个应用的案例&#xff0c;我们解释了后向传播算法&#x…

最后一场「屏之争」:汽车大佬与硅谷巨头的贴身肉搏

作者 | Tim Higgins 、William Boston来源&#xff1a;机器之能编译摘要&#xff1a;安卓的跨平台生态系统允许用户在手机和车机等不同屏幕上访问他们的数字生活&#xff0c;在去年&#xff0c;它帮助谷歌获得了 820 亿美元的移动广告收入。但在大众 CEO 赫伯特迪斯&#xff08…

对网络体系变革的思考

来源&#xff1a;&#xff1a;中兴摘要&#xff1a;互联网已走过了50年&#xff0c;其发展远远超越了初衷&#xff0c;各类新业务与应用加大了网络体系变革的压力&#xff0c;对网络体系颠覆性的探索和演进创新一直在进行。近年来关于5G网络体系的演进方向逐渐明朗&#xff0c;…

Junit 内部解密之一: Test + TestCase + TestSuite

转自:http://blog.sina.com.cn/s/blog_6cf812be0100wbhq.html nterface: Test 整个测试的的基础接口 Method 1: abstract int countTestCases() 这个方法主要是用来计算要运行的test case的数量的。 Method 2&#xff1a;abstract void run(TestResult result) 这个方法主要是…

数据预测之BP神经网络具体应用以及matlab实现

1.具体应用实例。根据表2&#xff0c;预测序号15的跳高成绩。 表2 国内男子跳高运动员各项素质指标 序号 跳高成绩() 30行进跑(s) 立定三级跳远() 助跑摸高() 助跑4—6步跳高() 负重深蹲杠铃() 杠铃半蹲系数 100 (s) 抓举 () 1 2.24 3.2 9.6 3.45 2.15 1…

谷歌机器人业务重组 花里胡哨没有用 要做实干家

来源&#xff1a; medium 编译 | 网易智能 (乐邦)在机器人领域&#xff0c;谷歌一直都不怎么顺利&#xff0c;尽管在前些年它大举进军&#xff0c;完成了多宗相关的并购交易。最近该公司重组成立Robotics at Google实验室&#xff0c;这对于机器人和智能机器的发展来说是一大步…

BP神经网络识别手写数字项目解析及matlab实现

BP神经网络指传统的人工神经网络&#xff0c;相比于卷积神经网络(CNN)来说要简单些。 人工神经网络具有复杂模式和进行联想、推理记忆的功能, 它是解决某些传统方法所无法解决的问题的有力工具。目前, 它日益受到重视, 同时其他学科的发展, 为其提供了更大的机会。1986 年, Rom…

智能家居市场年增速近30%!苹果看齐亚马逊、谷歌,欲开辟三足鼎立

来源&#xff1a;物联网智库整理摘要&#xff1a;作为世界领先的科技巨头&#xff0c;亚马逊、谷歌和苹果相爱相杀许多年。在智能家居领域&#xff0c;三家的“战争”也会随着市场的成熟而更加激烈。尽管苹果目前稍显落后&#xff0c;但未来市场广阔谁主沉浮仍未可知。近日&…