[数字图像处理]数字图像的有理数倍缩放(缩小与放大)

发布时间:2026/11/4 5:58:53

[数字图像处理]数字图像的有理数倍缩放(缩小与放大) 【修订版】本文已整理到我的个人博客订正了原文的几处错误分离式滤波中两个方向的滤波器对调了U3 时的线性插值核也写错了。CSDN 这一版保留原样之后的勘误与更新只在博客进行 Image Resize : 数字图像的有理数倍缩放 | Finns blog1.序言根据上两节的内容我们已经实现了整数倍的扩大与缩小。链接给在下面有需要的就点吧。[数字图像处理]数字图像的整数倍扩大(数字图像插值)[数字图像处理]数字图像的整数倍缩小事实上在缩小与放大图像的时候很多时候需要非整数倍的变换整数倍变换是很特殊的情况。在实现了整数倍的扩大与整数倍的缩小之后就可以实现有理数倍的变换。2.图像的分辨率的有理数倍变换图像的分辨率的有理数倍变换如上图所示。先进行U倍的扩大然后再缩小D倍那么就实现了U/D倍的分辨率变换。这里值得说的是U与D都是整数其中↑U表示了零值插入操作↓D则表示为降采样操作。我们将上面的图进行一个变换可以得到下面的图。其中。2.1 图像的分辨率的有理数倍扩大(UD)为了一些得到有理数倍扩大的有用结论。我们首先假设U3D2这样就相当于1.5倍的扩大。此时我们需要的理想滤波器的振幅特性如下所示。可以看到当UD的时候所用的扩大操作所用的滤波器的通带要比缩小操作的所用滤波器的通带要窄。所以我们所需要的有理数倍扩大所用的滤波器如下所以。到此我们可以得到如下两个非常有用的结论。①当UD的时候我们可以将直接当做使用。②当UD的时候缩小处理所用直接降采样法就可以了。其理由是已经很大程度上减小了混淆没有必要在使用平均操作法现在使用线性插值法与直接降采样法实现图像的1.5倍变换。输入图像的分辨率为512×512其输出图像的尺寸为768×768。结果图片就不贴出来了我直接上代码。f imread(./maru/maru_512.tif); f mat2gray(f,[0 255]); U 3; %拡大率 D 2; %縮小率 [M,N] size(f); g_bilin zeros((M*U)6,(N*U)6); H_bilin [1 2 3 2 1]/3; for x 1:1:M for y 1:1:N g_bilin((U*x)1,(U*y)1) f(x,y); end end g_bilin(1,:) g_bilin(U1,:); g_bilin((M*U)U1,:) g_bilin((M*U)1,:); g_bilin(:,1) g_bilin(:,U1); g_bilin(:,(M*U)U1) g_bilin(:,(M*U)1); for x 1:1:(U*M)6 g_bilin(x,:) filter(H_bilin,1,g_bilin(x,:)); end for y 1:1:(U*N)6 g_bilin(:,y) filter(H_bilin,1,g_bilin(:,y)); end g_b zeros((M*U),(N*U)); for x 1:1:(M*U) for y 1:1:(M*U) g_b(x,y) g_bilin(x3,y3); end end g_biline_down zeros(ceil((M*U)/D)-1,ceil((N*U)/D)-1); [P,Q] size(g_biline_down); for x 0:1:(P-1) %? for y 0:1:(Q-1) g_biline_down(x1,y1) g_b((x*D)1,(y*D)1); end end figure(); subplot(1,2,1); imshow(f,[0 1]); xlabel(a).Original Image); subplot(1,2,2); imshow(g_biline_down,[0 1]); xlabel(b).Ruselt of bilineardownsampled);2.2 图像的分辨率的有理数倍缩小(UD)同样的为了得到一些有用结论。我们首先假设U2D3这样就相当于2/3倍的变换相当于缩小。此时我们需要的理想滤波器的振幅特性如下所示。可以看到当UD的时候所用的扩大操作所用的滤波器的通带要比缩小操作的所用滤波器的通带要宽。所以我们所需要的有理数倍扩大所用的滤波器如下所以。到此我们可以得到如下两个非常有用的结论。①当UD的时候我们绝对不可将直接当做使用。其理由是的通带较窄并不能减小混淆现象②当UD的时候缩小处理所用滤波器将其进行U倍振幅调整即。那么调整过的滤波器的可以当做使用。但是如果处理不当的话会出现棋盘失真关于棋盘失真的条件我在本文的后面将会叙述。现在使用零次保持法最邻近插值法与平均操作法实现图像的2/3倍变换。输入图像的分辨率为512×512其输出图像的尺寸为341×341。结果图片就不贴出来了我直接上代码。f imread(./maru/maru_512.tif); f mat2gray(f,[0 255]); U 2; %拡大率 D 3; %縮小率 [M,N] size(f); g_hold_aver zeros((M*U)6,(N*U)6); H_hold_aver [1 2 2 1]/3; for x 0:1:M-1 for y 0:1:N-1 g_hold_aver((U*x)1,(U*y)1) f(x1,y1); end end g_hold_aver(1,:) g_hold_aver(U1,:); g_hold_aver((M*U)U1,:) g_hold_aver((M*U)1,:); g_hold_aver(:,1) g_hold_aver(:,U1); g_hold_aver(:,(M*U)U1) g_hold_aver(:,(M*U)1); for x 1:1:(U*M)6 g_hold_aver(x,:) filter(H_hold_aver,1,g_hold_aver(x,:)); end for y 1:1:(U*N)6 g_hold_aver(:,y) filter(H_hold_aver,1,g_hold_aver(:,y)); end g_H_A zeros((M*U),(N*U)); for x 1:1:(M*U) for y 1:1:(M*U) g_H_A(x,y) g_hold_aver(x3,y3); end end g_hold_aver zeros(ceil((M*U)/D)-1,ceil((N*U)/D)-1); [P,Q] size(g_hold_aver); for x 0:1:(P-1) %? for y 0:1:(Q-1) g_hold_aver(x1,y1) g_H_A((x*D)1,(y*D)1); end end figure(); subplot(1,2,1); imshow(f,[0 1]); xlabel(a).Original Image (512x512)); subplot(1,2,2); imshow(g_hold_aver,[0 1]); xlabel(b).Ruselt of holdaverage (341x341));3.分辨率变换时候需要注意的几个问题3.1分离式滤波处理事实上以上的实验水平方向与垂直方向都是以相同的倍率变化的。所以此时我们使用二维滤波器就可以实现。但是很多时候水平方向与垂直方向的变化是不同倍率的。所以为了实现这个变换我们用一维滤波器来实现图像的分辨率的变换如下图所示。首先对于M×N的图像先进行水平方向上逐列进行一维卷积得到的图像是P×N的图像。然后在垂直方向上逐行进行一维卷积就可以得到P×Q的图像。若如此处理则可以得到水平方向与垂直方向上的不同倍率变化。最为实验我实现了水平方向上的1.5倍扩大与垂直放上想的2/3倍的缩小。输入图像的分辨率512×512输出图像的分辨率341×768上面是效果图下面我贴出代码来。f imread(./lena/lena_gray_512.tif); f mat2gray(f,[0 255]); U_x 2; U_y 3; D_x 3; D_y 2; [M,N] size(f); g_xy zeros((M*U_x)6,(N*U_y)6); H_x [1 2 2 1]/3; H_y [1 2 2 1]/2; for x 0:1:M-1 for y 0:1:N-1 g_xy((U_x*x)1,(U_y*y)1) f(x1,y1); end end g_xy(1,:) g_xy(U_x1,:); g_xy((M*U_x)U_x1,:) g_xy((M*U_x)1,:); g_xy(:,1) g_xy(:,U_y1); g_xy(:,(M*U_y)U_y1) g_xy(:,(M*U_y)1); for x 1:1:(U_x*M)6 g_xy(x,:) filter(H_x,1,g_xy(x,:)); end for y 1:1:(U_y*N)6 g_xy(:,y) filter(H_y,1,g_xy(:,y)); end g_xy_2 zeros((M*U_x),(N*U_y)); for x 1:1:(M*U_x) for y 1:1:(M*U_y) g_xy_2(x,y) g_xy(x3,y3); end end g_xy_Result zeros(ceil((M*U_x)/D_x)-1,ceil((N*U_y)/D_y)-1); [P,Q] size(g_xy_Result); for x 0:1:(P-1) for y 0:1:(Q-1) g_xy_Result(x1,y1) g_xy_2((x*D_x)1,(y*D_y)1); end end figure(); subplot(1,2,1); imshow(f,[0 1]); xlabel(a).Original Image (512x512)); subplot(1,2,2); imshow(g_xy_Result,[0 1]); xlabel(b).Ruselt of holdaverage (341x768));3.2棋盘失真我们将3个像素上的平均操作振幅扩大调整两倍。将所得到的滤波器用作2/3倍缩小的操作的滤波器使用此滤波器如下所示。从振幅特性上与我们所希望的滤波器具有相同的特性。我们使用这个滤波器进行2/3倍缩小的操作可以得到如下所示的输出。可以看到画质非常的差出现了棋盘失真。关于为何会出现棋盘失真如下解释首先将所用滤波器进行多相分解Polyphase decomposition如下所示。我们得到了如上一个式子根据这个式子我们扩大操作的框图可以按照如下流程分解。按照上图我们可以得到一个信息。由于R0与R1的最终输出值不一致所以这个滤波器的输出无法收敛就像下图一样。所以其输出就成了一个棋盘一样的输出。所以期盼失真的出现的条件是按照多相分解的结果若每个部分的最终输出值不一致会导致滤波器的输出不收敛最终造成棋盘失真。为了避免棋盘失真就应该使其每个部分一致。到此我们就实现一幅图像的分辨率的有理数倍的缩放。参考文献貴家 仁志“ディジタル画像の解像度変換 — 任意サイズへの画像の変換” インターフェースCQ出版1998年6月貴家 仁志“ディジタル画像の解像度変換 — 画像の拡大” インターフェースCQ出版1998年4月貴家 仁志“ディジタル画像の表現と階調変換色間引きの原理” インターフェースCQ出版1998年2月《Digital Image Processing》 Rafael C. Gonzalez / Richard E. Woods原文发于博客 zhoufan900428-CSDN博客
延伸阅读

更多相关文章

2026/11/4 5:53:52

传统客运企业转型:新能源与智慧运营实践

1. 传统客运企业的转型突围之路在客运行业摸爬滚打多年,我亲眼见证了太多传统客运企业面临的困境:高铁网络日益完善、私家车保有量持续攀升、网约车平台蚕食市场份额...这些外部压力让传统道路客运企业的生存空间不断被挤压。烟台星龙客运的案例给我们提…

2026/11/4 5:53:52

RPA实战:从效率工具到职业跃迁的蜕变之路

1. 从效率工具到职业跃迁的蜕变之路第一次接触影刀RPA是在2020年疫情居家办公期间,当时为了处理每天上百份的Excel报表,我几乎要崩溃在重复的复制粘贴中。直到部门新来的95后同事悄悄分享了这个神器,我的职业生涯就此发生了转折性变化。RPA&a…

2026/11/4 5:53:52

AI工程从零构建:Python+TypeScript+Rust三角架构实战

1. 项目概述:从零构建AI工程能力,不是写个Hello World那么简单“AI Engineering from Scratch”这个标题乍看像极了那些泛泛而谈的入门教程——“手把手教你用Python写个神经网络”,但真正干过AI落地的人一眼就能看出,它根本不是讲…

2026/11/4 6:58:56

企业采购 AI 推广要关注哪些指标?拓氪科技实力解析

生成式大模型正在重构信息分发逻辑,传统搜索竞价获客成本持续攀升,AI 推广逐步成为企业数字营销采购的重要板块。艾瑞咨询监测数据显示,国内企业数字营销预算保持稳定增长,但多数项目营销投入难以实现正向 ROI。核心症结集中在服务…

2026/11/4 6:58:56

企业筛选 AI 推广服务商有哪些评估维度,拓氪科技是否值得考虑?

生成式 AI 彻底重塑了品牌信息的检索、引用与信任机制。在传统搜索时代,企业投放的核心目标是网页收录、曝光总量与关键词排名;进入 AI 问答与生成式搜索阶段,智能推荐、大模型问答成为用户了解企业的首要入口。 对企业采购工作而言,AI 推广的…

2026/11/4 6:58:56

全媒体舆情采购需要注意什么?朝闻通监测能力详解

全媒体生态之下,品牌舆情风险的发生场景已经发生根本性变化。风险不再局限于传统新闻门户,短视频平台、社交社区、垂直行业论坛、海外媒体与自媒体账号,都可能成为舆情发酵、扩散的源头。对于品牌营销、企业采购、公关团队而言,网…

2026/11/4 6:58:56

快速跑通 Wan2.2-TI2V-5B:单卡 720P 视频生成完整部署指南

快速跑通 Wan2.2-TI2V-5B:单卡 720P 视频生成完整部署指南 【免费下载链接】Wan2.2-TI2V-5B Wan2.2-TI2V-5B是一款开源的先进视频生成模型,基于创新的混合专家架构(MoE)设计,显著提升了视频生成的质量与效率。该模型支…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/4 0:03:20

AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年…

2026/11/4 0:03:20

从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你…

2026/11/4 0:03:20

32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑