前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >原-图像处理基础(二)图像的放大与缩小

原-图像处理基础(二)图像的放大与缩小

作者头像
Pulsar-V
发布于 2018-04-28 05:40:30
发布于 2018-04-28 05:40:30
3K00
代码可运行
举报
文章被收录于专栏:Pulsar-VPulsar-V
运行总次数:0
代码可运行

最近邻插值法

其中

  • size(g(x))代表图像像素矩阵列宽
  • size(g(y))代表图像像素矩阵行高
  • scale 代表缩放倍数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\begin{matrix} 
f(x)=g(round(x),round(y)) \\ 
 round(x)=\frac {size(g(x))}{ scale}\\
 round(y)=\frac {size(g(y))}{ scale}\\
\end{matrix}

Matlab代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%输入参数 源图像,放大倍数
function dst=imageNearestNeighbor(src,scale)
Row=size(src,1);  
Col=size(src,2);%图像行数和列数  
max_row=round(scale*Row);%求出变换后的坐标的最大值  
max_col=round(scale*Col);  
B=zeros(max_row,max_col,3);%定义变换后的图像  3表示3个通道(RGB)
for new_row=1:max_row
  for new_col=1:max_col
     x=round(new_row/scale);  
     y=round(new_col/scale);%最小临近法对图像进行插值  
     %处理边缘  
     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,:);  %B(i,j)像素点对应A最近邻点A(x,y)
   end  
end  
B=uint8(B);%将矩阵转换成8位无符号整数   

OpenCV代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//待更新

双线性插值

Matlab代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
%采用双线性内插值对图像进行缩放处理
%参数n表示缩放的倍数
function []=scale2(n)
ima=imread('test.jpg'); %读取原图像
ima=double(ima); %二维矩阵转为双精度类型
swh=size(ima); %获取原图像的宽高
sh=swh(:,1); %获取原图像的高
sw=swh(:,2); %获取原图像的宽
 
%"加墙"
ima2=zeros(sh+2,sw+2);
ima2(1,2:sw+1)=ima(1,:); %原图像上边加墙,灰度值与边界一致
ima2(sh+2,2:sw+1)=ima(sh,:); %原图像下边加墙,灰度值与边界一致
ima2(2:sh+1,2:sw+1)=ima; %将原图像赋值给中心部分
ima2(:,1)=ima2(:,2); %原图像左边加墙,灰度值与边界一致
ima2(:,sw+2)=ima2(:,sw+1); %原图像右边加墙,灰度值与边界一致
 
dw=sw*n; %计算缩放后的图像的宽
dh=sh*n; %计算缩放后的图像的高
 
dw1=round((sw+2)*n); %计算加墙后缩放的图像的宽
dh1=round((sh+2)*n); %计算加墙后缩放的图像的高
 
resIma1=zeros(dh1,dw1); %创建原图像的矩阵
 
%从不是“墙”的位置开始计算缩放后的图像的各点灰度值
%考虑缩小图像时,输入的缩放倍数是小数,需进行取整
start=round(n+1);
endI=round(dh+n);
endJ=round(dw+n);
 
for i=start:endI
    for j=start:endJ
        tx=i/n; %缩放后的图像坐标在原图像处的位置
        ty=j/n;
        tdx=tx-floor(tx); %得到小数坐标
        tdy=ty-floor(ty);
        %确定临近四个角的坐标
        %Q11Q11x=tx-tdx;
        Q11y=ty-tdy;
        %Q12Q12x=tx-tdx;
        Q12y=Q11y+1;
        %Q21Q21x=Q11x+1;
        Q21y=Q11y;
        %Q22Q22x=Q11x+1;
        Q22y=Q11y+1;
        %根据双线性内插算法,算出缩放后的图像在(i,j)点处的灰度值
        resIma1(i,j)=tdx*tdy*ima2(Q11x,Q11y)+(1-tdx)*tdy*ima2(Q12x,Q12y)+tdx*(1-tdy)*ima2(Q21x,Q21y)+(1-tdy)*(1-tdx)*ima2(Q22x,Q22y);
    end
end
resIma=resIma1(n+1:dh+n,n+1:dw+n); %截取除墙外的中心部分
resIma=uint8(resIma);
imshow(resIma); %显示缩放后的图像
end

OpenCV 代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//待填坑

**附上一道很经典的 双线性插值 面试题 ** 已知Q12,Q22,Q11,Q21的坐标如图1,求P点的坐标

双三次插值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//笔者编程能力有限,待笔者好好研究研究。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【机器视觉与图像处理】基于MATLAB+Hough的圆检测
本次文章,没有太多好写的,就是最近做的一个机器视觉的课程设计作业,是要做一个流水线的生产线建模以及对于产品的检测识别,我个人承包了圆心半径检测的内容,熬了好几天,终于找到了一个好的算法可以比较迅速准确的找到圆了。天不负我!!
用户1687088
2018/07/24
2.8K0
【机器视觉与图像处理】基于MATLAB+Hough的圆检测
图像变换-旋转问题来了
上次写了图像变换-旋转问题,试一试?,后面留了个问题,本来就是随便说说的,留给大家一个探索的机会,刚好碰到最近事情也有点多,没空弄。
叶子陪你玩
2022/01/05
4040
图像变换-旋转问题来了
数字图像处理学习笔记(七)——用Pycharm及MATLAB实现三种图像内插法(最近邻内插法、双线性内插法、双三次内插法)
★由于之前学习笔记(四)有对于图像三种插值的理论讲解,这里就不再赘余; 可参照此文阅读学习☞图像的三种内插法
荣仔_最靓的仔
2021/02/02
1.1K0
数字图像处理学习笔记(七)——用Pycharm及MATLAB实现三种图像内插法(最近邻内插法、双线性内插法、双三次内插法)
数学函数图像处理_matlab基本图像处理
[Y newmap] = imresize(X, map, scale)代码示例:
全栈程序员站长
2022/11/09
1.6K0
数学函数图像处理_matlab基本图像处理
图像插值算法和OpenCV框架
最近邻插值,是指将目标图像中的点,对应到源图像中后,找到最相邻的整数点,作为插值后的输出。
致Great
2020/04/24
1.4K0
图像插值算法和OpenCV框架
数字图像处理学习笔记(四)——数字图像的内插、度量、表示与质量
内插是在诸如放大、收缩、旋转和几何校正等任务中广泛应用的基本工具 从根本上看,内插是用已知数据来 估计未知位置的数值的处理 实现图像内插的方法有三种: 最近邻内插法、双线性内插法、双三次内插法
荣仔_最靓的仔
2021/02/02
1.8K0
数字图像处理学习笔记(四)——数字图像的内插、度量、表示与质量
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换 OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
  图像几何变换又称为图像空间变换,它将一副图像中的坐标位置映射到另一幅图像中的新坐标位置。我们学习几何变换就是确定这种空间映射关系,以及映射过程中的变化参数。图像的几何变换改变了像素的空间位置,建立一种原图像像素与变换后图像像素之间的映射关系,通过这种映射关系能够实现下面两种计算:
vv彭
2020/10/27
3.9K0
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换
    


OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
数字图像处理必备基本知识
数字图像,又称为数码图像或数位图像,是二维图像用有限数字数值像素的表示。数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用数字计算机或数字电路存储和处理的图像。
小白学视觉
2022/02/14
1.3K1
数字图像处理必备基本知识
OpenCV图像处理专栏十九 | 手动实现基于Canny算子的边缘检测
接着昨天手动构造Sobel算子实现检测,今天来讲讲如何手动实现Canny边缘检测。由于要实现这个算法的需要的先验知识比较多,所以在学习这个算法的实现之前我们先来学习一下用于图像二值化的OSTU大津法。
BBuf
2020/03/19
1.5K0
[图像]图像缩放算法-双线性内插法
原文链接:http://blog.csdn.net/humanking7/article/details/45014879
祥知道
2020/03/10
1.5K0
视频技术快览 0x0 - 图像基础和前处理
视频行业常见的分辨率有 QCIF(176x144)、CIF(352x288)、D1(704x576 或 720x576),还有 360P(640x360)、720P(1280x720)、1080P(1920x1080)、4K(3840x2160)、8K(7680x4320)等。
Cellinlab
2023/05/17
7610
视频技术快览 0x0 - 图像基础和前处理
Matlab系列记录之图像处理(结束篇)
对于图像处理,我现在也是一知半解的程度,毕业后基本就没接触这些东西了,如果有理解的不对的地方,欢迎指出~
狂人V
2021/10/20
2K0
Matlab系列记录之图像处理(结束篇)
【图像处理】详解 最近邻插值、线性插值、双线性插值、双三次插值「建议收藏」
2.1 最近邻插值 (Nearest Neighbor Interpolation) —— 零阶插值法
全栈程序员站长
2022/09/06
20.4K0
【图像处理】详解 最近邻插值、线性插值、双线性插值、双三次插值「建议收藏」
基于FPGA的灰度图像处理之对数变化
对数变化的通用公式:s = clog(1+r)--------------------------------------------------------------(1)
FPGA开源工作室
2019/10/29
7960
基于FPGA的灰度图像处理之对数变化
OpenCV与图像处理(五)
以下代码均在python3.6,opencv4.2.0环境下试了跑一遍,可直接运行。
Must
2020/07/28
7200
OpenCV与图像处理(五)
matlab图像处理基础
1、MATLAB中图象数据的读取 A、 imread imread函数用于读入各种图象文件,其一般的用法为 [X,MAP]=imread(‘filename’,‘fmt’) 其中,X,MAP分别为读出的图象数据和颜色表数据,fmt为图象的格式,filename为读取的图象文件(可
全栈程序员站长
2022/11/09
9750
FPGA实现图像几何变换:缩放
  直接根据缩放公式计算得到的目标图像中,某些映射源坐标可能不是整数,从而找不到对应的像素位置。例如,当Sx=Sy=2时,图像放大2倍,放大图像中的像素(0, 1)对应于原图中的像素(0, 0.5),这不是整数坐标位置,自然也就无法提取其灰度值。因此我们必须进行某种近似处理,这里介绍一-种简单的策略即直接将它最邻近的整数坐标位置(0,0)或者(0,1)处的像素灰度值赋给它,这就是所谓的最近邻插值。当然还可以通过其他插值算法来近似处理。
FPGA开源工作室
2020/04/01
1.7K0
FPGA实现图像几何变换:缩放
百问FB显示开发图像处理 - 图像调整
图像缩放算法有很多种,这里参考网友"lantianyu520"所著的"图像缩放算法"。
阿志小管家
2024/12/03
1220
百问FB显示开发图像处理 - 图像调整
深入理解双线性插值算法
看了好几篇关于双线性插值算法的博文,解释得都不好理解,不过下面这篇博文就解释得很好,以下内容均参考这篇:
全栈程序员站长
2022/09/06
1.6K0
深入理解双线性插值算法
数字图像放大算法
上一篇推送中,为大家介绍了几种图像处理算法总结的方法,在本次推送中,二白继续为大家介绍余下的方法。
小白学视觉
2019/10/24
1.7K0
推荐阅读
相关推荐
【机器视觉与图像处理】基于MATLAB+Hough的圆检测
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验