图像金字塔

图像金字塔(MATLAB 版本)

目录

  • 图像金字塔(MATLAB 版本)
    • 一、 生成图像金字塔
    • 二、 Matlab实践操作
    • 三、实践问题

一、 生成图像金字塔

在 MATLAB 中,可以使用 impyramid 函数来生成图像金字塔。
代码示例:
matlab

% 读取图像
image = imread('test.jpg');
% 生成低分辨率图像(向下金字塔)
down = impyramid(image, 'reduce');
% 生成高分辨率图像(向上金字塔)
up = impyramid(down, 'expand');
% 显示图像
figure;
imshow(image);
title('Original Image');
figure;
imshow(down);
title('Down-sampled');
figure;
imshow(up);
title('Up-sampled');

说明:
• impyramid(image, ‘reduce’):将图像向下采样(分辨率降低一半)。
• impyramid(down, ‘expand’):将图像向上采样(分辨率恢复为原来的两倍)。

二、 Matlab实践操作

在这里插入图片描述

在实践操作中通过上面的代码,将一张图的原图、向下金字塔图、向上金字塔图分别处理后展示出来,此时发现向下金字塔之后图像分辨率确实变小了,向上金字塔后图像并没有视觉上变得更清晰,只是将分辨率又恢复到了原图的大小,但是此时丢失了一些图像质量细节。

三、实践问题

Q:为什么在实际的代码操作中向上金字塔后的图像细节丢失没有原图清晰?

图像金字塔:向上金字塔与分辨率提升

  1. 向上金字塔与分辨率提升
    向上金字塔(Up Pyramid) 是指通过上采样(Upsampling)将图像的分辨率从低分辨率恢复到高分辨率。在 OpenCV 中,cv::pyrUp 函数默认会将图像的尺寸放大一倍(即宽度和高度各增加一倍,分辨率提升四倍)。然而,向上金字塔的图像通常不会比原始图像更清晰,因为上采样过程无法恢复丢失的高频细节。

  2. 为什么向上金字塔的图像不清晰
    在图像金字塔中,向上金字塔的过程通常包括以下步骤:

    1. 上采样(Upsampling) :将低分辨率图像放大到高分辨率。这通常是通过插值(如双线性插值或双三次插值)来实现的。
    2. 细节恢复(Detail Recovery) :通过结合高斯金字塔的信息,恢复部分高频细节。
      然而,向上金字塔的图像通常不如原始图像清晰,原因如下:
      • 信息丢失 :在向下金字塔(Down Pyramid)过程中,图像经过模糊和下采样,高频细节已经被丢失。即使通过上采样恢复到高分辨率,丢失的细节也无法完全恢复。
      • 插值的局限性 :上采样过程依赖于插值算法(如双线性插值),这些算法无法生成新的细节,只能通过已有的像素值进行估计。
      • 噪声放大 :如果图像中存在噪声,上采样过程可能会放大噪声,导致图像更加模糊。
  3. 拉普拉斯金字塔(Laplacian Pyramid)
    为了更准确地恢复图像细节,可以使用 拉普拉斯金字塔 。拉普拉斯金字塔结合了高斯金字塔的信息和细节图像(Detail Image),从而能够更清晰地恢复图像细节。
    3.1 拉普拉斯金字塔的原理

    1. 高斯金字塔(Gaussian Pyramid) :通过模糊和下采样生成低分辨率图像。
    2. 细节图像(Detail Image) :通过原始图像和上采样的高斯金字塔图像之间的差异,提取高频细节。
    3. 拉普拉斯金字塔(Laplacian Pyramid) :通过结合高斯金字塔和细节图像,逐步恢复图像的高频细节。
      3.2 MATLAB 实现
      以下是使用拉普拉斯金字塔恢复图像细节的 MATLAB 示例代码:
      matlab
% 读取图像
original = imread('test.jpg');
original = rgb2gray(original); % 转换为灰度图像
% 生成高斯金字塔
gaussian = original;
gaussian_pyr = cell(1, 3); % 存储金字塔的每一层
gaussian_pyr{1} = gaussian;
for i = 2:3
gaussian = impyramid(gaussian, 'reduce');
gaussian_pyr{i} = gaussian;
end
% 生成拉普拉斯金字塔
laplacian_pyr = cell(size(gaussian_pyr));
laplacian_pyr{end} = gaussian_pyr{end}; % 最低分辨率层直接存储
for i = length(gaussian_pyr)-1:-1:1
up = impyramid(gaussian_pyr{i+1}, 'expand');
laplacian = gaussian_pyr{i} - up;
laplacian_pyr{i} = laplacian;
end
% 恢复图像
reconstructed = laplacian_pyr{1};
for i = 2:length(laplacian_pyr)
up = impyramid(reconstructed, 'expand');
reconstructed = up + laplacian_pyr{i};
end
% 显示结果
figure;
imshow(original);
title('Original Image');
figure;
imshow(reconstructed, []);
title('Reconstructed Image');

说明:
• impyramid:生成高斯金字塔。
• laplacian_pyr:存储拉普拉斯金字塔的每一层。
• reconstructed:通过拉普拉斯金字塔逐步恢复图像细节。

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

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

相关文章

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(一)

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(一) 第一部分:网络平台搭建与设备安全防护任务书DCRS:DCFW:DCWS:WAF: 第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务 1&…

20250212:https通信

1:防止DNS劫持:使用 https 进行通信。 因为是SDK授权开发,需要尽量压缩so库文件和三方依赖。所以第一想法是使用 head only 的 cpp-httplib 进行开发。 cpp-httplib 需要 SSL 版本是 3.0及以上。但本地已经在开发使用的是1.0.2a版本,不满足需求。 方案1:升级OpenSSL 将Op…

一、C#基础入门课程【学习20天】01-07

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…

基于SpringBoot + Vue的共享汽车(单车)管理系统设计与实现+毕业论文+开题报告+指导搭建视频

本系统包含管理员、用户两个角色。 管理员角色:个人中心管理、用户管理、投放地区管理、汽车信息管理、汽车投放管理、汽车入库管理、使用订单管理、汽车归还管理。 用户角色:注册登录、汽车使用下单、汽车归还。 本共享汽车管理系统有管理员和用户。管…

DeepSeek+Kimi生成高质量PPT

DeepSeek与Kimi生成PPT全流程解析 一、工具分工原理 DeepSeek核心作用:生成结构化PPT大纲(擅长逻辑构建与内容优化)Kimi核心作用:将文本转换为视觉化PPT(提供模板库与排版引擎) 二、操作步骤详解 1. 通…

Android KMP初探

Android KMP初探 前言: 最近线上听了Kotlin官网举行的KMP会议,感觉听神奇的,于是就把官方demo下载下来尝试了一下,下载插件和所需要的依赖都用了很久,但是发现里面的代码很少,于是尝试自己手写了一下&…

鸿蒙NEXT应用App测试-通用测试

注意:大家记得学完通用测试记得再学鸿蒙专项测试 https://blog.csdn.net/weixin_51166786/article/details/145768653 注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章…

GO 快速升级Go版本

由于底层依赖升级了,那我们也要跟着升,go老版本已经不足满足需求了,必须要将版本升级到1.22.0以上 查看当前Go版本 命令查看go版本 go version [rootlocalhost local]# go version go version go1.21.4 linux/amd64 [rootlocalhost local]# …

Redis——用户签到BitMap,UV统计

目录 BitMap 使用场景 1. 用户签到系统 2. 用户行为标记 3. 布隆过滤器(Bloom Filter) BitMap介绍 Redis中的使用 Redis功能示例 添加: 获取: 批量获取: java中实现 统计本月连续签到次数 UV统计 UV 统计…

Redis|持久化

文章目录 总体介绍RDB(Redis DataBase)官网介绍案例演示优势劣势 总体介绍 官网地址:https://redis.io/docs/manual/persistence/ 持久化双雄: RDB(Redis DataBase):RDB 是 Redis 默认的持久化…

51单片机编程学习笔记——点亮LED

大纲 器件51单片机开发板总结 安装驱动点亮LED烧录 随着最近机器人爆火,之前写的ROS2系列博客《Robot Operating System》也获得了更多的关注。我决定在机器人领域里再走一步,于是想到可以学习单片机。研究了下学习路径,最后还是选择先从51单…

基于Spring Boot的公司资产网站设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

华为2025年技术发布会:智能汽车核心技术大爆发

近日,华为在鸿蒙智行尊界技术发布会上发布了多项智能汽车核心技术,涵盖智能驾驶、安全防护、通信系统、座舱交互及电池技术等领域,标志着其从“被动智能”向“自主智能”的战略升级。 以下是核心技术的综合梳理: 六大核心创新 途…

ctfshow做题笔记—栈溢出—pwn57~pwn60

目录 前言 一、pwn57(先了解一下简单的64位shellcode吧) 二、pwn58 三、pwn59(64位 无限制) 四、pwn60(入门难度shellcode) 前言 往前写了几道题,与shellcode有关,关于shellc…

测试面试题:以一个登录窗口为例,设计一下登录界面测试的思路和方法

在测试登录窗口时,可以从 表单测试、 逻辑判断和 业务流程三个方面设计测试思路和方法。以下是一个详细的测试方案: 1. 表单测试 表单测试主要关注输入框、按钮等UI元素的正确性和用户体验。 测试点: 输入框测试 用户名和密码输入框是否正常显示。输入框是否支持预期的字符类…

小型字符级语言模型的改进方向和策略

小型字符级语言模型的改进方向和策略 一、回顾小型字符级语言模型的处理流程 前文我们已经从零开始构建了一个小型字符级语言模型,那么如何改进和完善我们的模型呢?有哪些改进的方向?我们先回顾一下模型的流程: 图1 小型字符级语言模型的处理流程 (1)核心模块交互过程:…

基于数据可视化+SpringBoot+安卓端的数字化施工项目计划与管理平台设计和实现

博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…

初识.git文件泄露

.git 文件泄露 当在一个空目录执行 git init 时,Git 会创建一个 .git 目录。 这个目录包含所有的 Git 存储和操作的对象。 如果想备份或复制一个版本库,只需把这个目录拷贝至另一处就可以了 这是一种常见的安全漏洞,指的是网站的 .git 目录…

基于Nanopi duo2的WiFi智能摄像头

1.固件包烧录 https://wiki.friendlyelec.com/wiki/index.php/NanoPi_Duo2/zh#.E8.BF.9E.E6.8E.A5WiFi 固件包链接以及烧录工具都在上面链接中 烧录过程 使用读卡器将SD卡插入到电脑,然后打开烧录工具 2.通过串口工具连接板子使其连接WiFi 对应的串口工具,就是这个HyperT…

单片机延时函数怎么写规范?

我们以前在开发产品的时候,肯定会碰到一些延时需求,比如常见的LED闪烁,按键消抖,控制IO口输出时序等等。 别小看延时,这个小问题,想做好,甚至要考虑到程序架构层面。 在开发板上,可能…