图像放大算法总结及MATLAB源程序

1,插值算法(3种):

(1)最邻近插值(近邻取样法):  最近插值的的思想很简单就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色。可见,最邻近插值简单且直观,但得到的图像质量不高最邻近插值 = imread('F:\lena.jpg');%读取图像信息

imshow(A); %显示原图

title('原图128*128');

Row = size(A,1); Col = size(A,2);%图像行数和列数

nn=8;%放大倍数

m = round(nn*Row);%求出变换后的坐标的最大值

n = round(nn*Col);

B = zeros(m,n,3);%定义变换后的图像

for i = 1 : m

for j = 1 : n

x = round(i/nn); y = round(j/nn);%最小临近法对图像进行插值

if x==0 x = 1; end

if y==0 y = 1; end

if x>Row x = Row; end

if y>Col y = Col;end

B(i,j,:) = A(x,y,:);

end

end

B = uint8(B);%将矩阵转换成8位无符号整数

figure;

imshow(B);

title('最邻近插值法放大8倍1024*1024');

运行程序后,原图如图1所示:

图1

用最邻近插值双线性内插:双线性内插对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v),其中i、j均为非负整数,u、v为[0,1)区间的浮点数,则这个像素得值 f(i+u,j+v) 可由原图像中坐标为 (i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:

f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1)

其中f(i,j)表示源图像(i,j)处的的像素值,以此类推这就是双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的的情况。由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊imresize( )来实现双线性内插值算法。

双线性内插值算法的MATLAB源代码为:

A=imread('F:\lena.jpg');

imshow(A);

title('原图128*128');

C=imresize(A,8,'bilinear'); %双线性插值

figure;

imshow(C);

title('双线性内插值法放大8倍1024*1024');

程序运行后,原图如图3所示:

图3

双线性内插值法放大8倍后的图如图4所示:

图4

(3)双三次法法能够克服以上两种算法的不足,计算精度高,但计算大,考虑一个浮点坐标(i+u,j+v)周围的16个邻点目的像素值f(i+u,j+v)可由如下插值公式得到:f(i+u,j+v) = [A] * [B] * [C]

[A]=[ S(u + 1) S(u + 0) S(u - 1) S(u - 2) ][C]=[ S(v + 1) S(+ 0) S( - 1) S( - 2) ]T;

而[B]是周围16个邻点组成的4*4的矩阵;S(x)是对 Sin(x*π)/x 的逼近imresize( )来实现双三次插值算法。MATLAB源代码为:

A=imread('F:\lena.jpg'); %读取原图像

D=imresize(A,8,'bicubic'); %双三次插值放大8倍

figure;

imshow(D);

title('三次卷积法放大8倍1024*1024');

MATLAB自带双三次插值法运行结果如图5所示:

图5

也可以自己编写双三次插值算法MATLAB代码如下:

clc,clear;

ff=imread('F:\lena.jpg'); %读取图像到ff

k=8; %设置放大倍数

[m,n,color]=size(ff);

f=zeros(m,n); %将彩色图像ff转换为黑白图像f

for i=1:m

for j=1:n

f(i,j)=ff(i,j);

end

end

a=f(1,:);c=f(m,:); %将待插值图像矩阵前后各扩展两行两列,共扩展四行四列

b=[f(1,1),f(1,1),f(:,1)',f(m,1),f(m,1)];d=

图片缩放 算法 matlab,图像放大算法总结及MATLAB源程序.doc相关推荐

  1. matlab 图像白平衡算法,Matlab常用白平衡算法

    <Matlab常用白平衡算法>由会员分享,可在线阅读,更多相关<Matlab常用白平衡算法(21页珍藏版)>请在人人文库网上搜索. 1.1 灰色世界法灰色世界法(grey wo ...

  2. matlab图像局部放大算法

    此代码可从https://github.com/TimeIvyace/Partial-Enlargement-of-Image.git中下载 本算法简单的实现了图像局部放大的效果,算法需要确定放大区域 ...

  3. 【图像压缩】基于matlab香农熵和差分进化算法多级图像阈值图像压缩【含Matlab源码 2035期】

    一.差分进化算法简介 1 前言 在遗传.选择和变异的作用下,自然界生物体优胜劣汰,不断由低级向高级进化和发展.人们注意到,适者生存的进化规律可以模式化,从而构成一些优化算法:近年来发展的进化计算类算法 ...

  4. 实战28:数字图像可视化水印系统的设计与实现(LSB算法、DCT算法、随机间隔算法、区域校验位算法、图像降级算法、图像降级算法改进等6种数字水印算法的实现)

    基于数字图像的可视化水印系统按照水印算法的不同主要分为空间域水印和变换域水印两大类.空间域水印以 LSB 算法--最低有效位算法为代表,变换域水印以 DCT 算法--离散余弦变换算法为代表[10]. ...

  5. [MATLAB] 图像的插值算法1:MATLAB中的插值函数及其原理

    MATLAB图像插值算法文章集: 插值函数及其原理 https://blog.csdn.net/Effend/article/details/82870144 最近邻插值 https://blog.c ...

  6. 【图像压缩】香农熵和差分进化算法多级图像阈值图像压缩【含Matlab源码 2035期】

    ⛄一.差分进化算法简介 1 前言 在遗传.选择和变异的作用下,自然界生物体优胜劣汰,不断由低级向高级进化和发展.人们注意到,适者生存的进化规律可以模式化,从而构成一些优化算法:近年来发展的进化计算类算 ...

  7. opencv 图像 抠图 算法_图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting

    一.序言 陆陆续续的如果累计起来,我估计至少有二十来位左右的朋友加我QQ,向我咨询有关抠图方面的算法,可惜的是,我对这方面之前一直是没有研究过的.除了利用和Photoshop中的魔棒一样的技术或者Ph ...

  8. 鱼眼校正c语言算法,鱼眼图像校正算法.PDF

    鱼眼图像的校正算法 诵广垒 (天津工业大学信息与工程学院,天津300160) 摘要:基于鱼眼镜头的全方位视觉系统可应用在很多方面,如全视觉监视.机器人导航等.全方位视觉系统的 标定和畸变图像的校正是至 ...

  9. matlab 图像 放大缩小,图像的放大与缩小(MATLAB 代码)

    首先第一种: function I=ImageZoom(I1,x,y) %功能:实现图像的任意倍数缩放 %x---水平缩放系数 %y---竖直缩放系数 if length(size(I1))>2 ...

最新文章

  1. 让AngularJS的$http 服务像jQuery.ajax()一样工作
  2. java enum(枚举)的使用
  3. python爬取知乎标题_python爬知乎热榜
  4. Excel的基础操作
  5. 关于miniconda的安装,配置以及包批量安装和使用
  6. python turtle画简单树_大家用Python-turtle库作图画出过哪些漂亮的树哇 ?
  7. 2018-2019-2 20165234 《网络对抗技术》 Exp2 后门原理与实践
  8. java序列化原理_Java序列化机制和原理
  9. C++基础知识:fflush(stdin)的误区
  10. java的维护_天了噜,Java 8 要停止维护了!
  11. matlab计算abc三相短路电流_变频电源的安装及单相/三相变频电源电流计算公
  12. WebSphere水平集群集成IHS
  13. iOS动画之大雪纷飞
  14. 苹果ios签名证书的生成方法
  15. 归并排序(默认2路归并)
  16. jmeter参数化之函数助手
  17. http状态返回代码 1xx(临时响应)
  18. time(),date(),microtime()…
  19. php+advanced
  20. 使用pytorch可视化中间层的结果

热门文章

  1. 微服务架构面试送送送命题!
  2. Spring事务--笔记
  3. VS2017项目打包为exe和setup
  4. CoTNet 修改笔记
  5. the final mapping would have more than 1 type
  6. opencv转pytorch
  7. concurrent.futures dataset
  8. ubuntu 在 rc.local 里添加了命令为什么无法执行
  9. Invalid argument(s) 'pool_size' sent to create_engine(), using configuration
  10. pytorch问题汇总