【youcans 的 OpenCV 例程200篇】185.图像金字塔之高斯金字塔

OpenCV 例程200篇 总目录-202205更新


【youcans 的 OpenCV 例程200篇】185.图像金字塔之高斯金字塔


6. 图像金字塔

图像金字塔是一种以多分辨率来解释图像的结构,常用于图像分割、图像压缩和机器视觉。

图像金字塔是一系列来源于同一张原始图像、以金字塔形状排列的分辨率逐步降低的图像集合。从底层图像可以看清更多细节,从顶层图像可以看到更多的轮廓特征。通常,上层图像的宽度和高度是相邻的下层图像的 1/2。

通过对原始图像进行多尺度像素采样,生成多个不同分辨率的图像。把高分辨率的原始图像放在底部,越往上的图像越小越模糊,最小的图像放在顶部,称为图像金字塔。

向下采样,分辨率逐级降低;向上采样,分辨率逐级升高。上采样和下采样是不可逆的,将下采样的图像还原回原来尺寸时会丢失高频信息,使图片变模糊。

OpenCV 为向下采样和向上采样提供了两个函数:cv2.pyrDowncv2.pyrUp


6.1 高斯金字塔(Gaussian pyramid)

高斯金字塔(Gaussian pyramid)用于向下降采样,分辨率逐级降低。

高斯金字塔通过高斯平滑和降采样获得一系列下采样图像。首先将原图像作为最底层的图像 G0(第0层),利用高斯核(5*5)进行卷积操作,然后对卷积图像进行下采样(去除偶数行和列)得到上一层的图像 G1;重复卷积和下采样操作得到上一层图像,反复迭代,形成一个金字塔形的图像数据结构。

高斯金字塔通过上采样操作可以放大图像:先将图像的高度和宽度加倍扩充,新增的行和列以 0 填充;再用相同的卷积核(乘以 4)对扩充图像进行卷积操作,就得到放大的近似图像。上采样和下采样是不可逆的,缩放过程中存在信息丢失,因此上采样还原的图像比原始图像模糊。

OpenCV 为向下采样和向上采样提供了两个函数:cv2.pyrDowncv2.pyrUp

函数说明:

cv2.pyrDown(src[, dst[, dstsize[, borderType]]]) → dst  # 向下采样
cv2.pyrUp(src[, dst[, dstsize[, borderType]]]) → dst  # 向下采样

函数 cv2.pyrDown 是从高分辨率的大尺寸图像逐次向下采样得到一系列图像,构建成为高斯金字塔,是一个重复高斯平滑并重新对图像采样的过程。

函数 cv2.pyrUp 对图像进行上采样和模糊。 它也可以用于拉普拉斯金字塔操作

参数说明:

  • src:输入图像
  • dst:输出图像,大小和类型与 src 相同
  • dstsize:输出图像的尺寸,默认为输入图像尺寸的 1/2
  • borderType:边界扩充的类型

注意事项:

  • 高斯平滑的卷积核为 5*5

例程:1.85 高斯图像金字塔

    # # 1.85:高斯图像金字塔 (Gaussian pyramid)img = cv2.imread("../images/imgLena.tif", flags=1)# 图像向下取样pyrD0 = img.copy()pyrD1 = cv2.pyrDown(pyrD0)pyrD2 = cv2.pyrDown(pyrD1)pyrD3 = cv2.pyrDown(pyrD2)# 图像向上取样pyrU3 = pyrD3.copy()pyrU2 = cv2.pyrUp(pyrU3)pyrU1 = cv2.pyrUp(pyrU2)pyrU0 = cv2.pyrUp(pyrU1)plt.figure(figsize=(10, 6))plt.subplot(244), plt.axis('off'), plt.title("->"+str(pyrD3.shape[:2]))down3 = np.zeros_like(img, dtype=np.uint8)down3[:pyrD3.shape[0],:pyrD3.shape[1],:] = pyrD3plt.imshow(cv2.cvtColor(down3, cv2.COLOR_BGR2RGB))plt.subplot(243), plt.axis('off'), plt.title("->"+str(pyrD2.shape[:2]))down2 = np.zeros_like(img, dtype=np.uint8)down2[:pyrD2.shape[0],:pyrD2.shape[1],:] = pyrD2plt.imshow(cv2.cvtColor(down2, cv2.COLOR_BGR2RGB))plt.subplot(242), plt.axis('off'), plt.title("->"+str(pyrD1.shape[:2]))down1 = np.zeros_like(img, dtype=np.uint8)down1[:pyrD1.shape[0],:pyrD1.shape[1],:] = pyrD1plt.imshow(cv2.cvtColor(down1, cv2.COLOR_BGR2RGB))plt.subplot(241), plt.axis('off'), plt.title(str(pyrD0.shape[:2]))plt.imshow(cv2.cvtColor(pyrD0, cv2.COLOR_BGR2RGB))plt.subplot(248), plt.axis('off'), plt.title("<-"+str(pyrU3.shape[:2]))up3 = np.zeros_like(img, dtype=np.uint8)up3[:pyrU3.shape[0],:pyrU3.shape[1],:] = pyrU3plt.imshow(cv2.cvtColor(up3, cv2.COLOR_BGR2RGB))plt.subplot(247), plt.axis('off'), plt.title("<-"+str(pyrU2.shape[:2]))up2 = np.zeros_like(img, dtype=np.uint8)up2[:pyrU2.shape[0],:pyrU2.shape[1],:] = pyrU2plt.imshow(cv2.cvtColor(up2, cv2.COLOR_BGR2RGB))plt.subplot(246), plt.axis('off'), plt.title("<-"+str(pyrU1.shape[:2]))up1 = np.zeros_like(img, dtype=np.uint8)up1[:pyrU1.shape[0],:pyrU1.shape[1],:] = pyrU1plt.imshow(cv2.cvtColor(up1, cv2.COLOR_BGR2RGB))plt.subplot(245), plt.axis('off'), plt.title(str(pyrU0.shape[:2]))up0 = np.zeros_like(img, dtype=np.uint8)up0[:pyrU0.shape[0],:pyrU0.shape[1],:] = pyrU0plt.imshow(cv2.cvtColor(up0, cv2.COLOR_BGR2RGB))plt.tight_layout()plt.show()

在这里插入图片描述



(本节完)


版权声明:

OpenCV 例程200篇 总目录-202205更新
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/124834527)

Copyright 2022 youcans, XUPT
Crated:2022-5-18


欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中

【youcans 的 OpenCV 例程200篇】185.图像金字塔之高斯金字塔
【youcans 的 OpenCV 例程200篇】186.图像金字塔之拉普拉斯金字塔
【youcans 的 OpenCV 例程200篇】187.由拉普拉斯金字塔还原图像
【youcans 的 OpenCV 例程200篇】188.基于拉普拉斯金字塔的图像融合
【youcans 的 OpenCV 例程200篇】189.基于掩模的拉普拉斯金字塔图像融合
【youcans 的 OpenCV 例程200篇】190.基于图像分割的图像融合
【youcans 的 OpenCV 例程200篇】191.基于图像分割的金字塔图像融合
【youcans 的 OpenCV 例程200篇】192.Gabor 滤波器组的形状
【youcans 的 OpenCV 例程200篇】193.基于Gabor 滤波器的特征提取
更多内容,请见:
【OpenCV 例程200篇 总目录-202206更新】

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

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

相关文章

java常用的缓存_java 常用缓存 - 只对肉有感觉的个人空间 - OSCHINA - 中文开源技术交流社区...

缓存是日常开发的粗茶淡饭&#xff0c;如果应用对某类数据有着较高的读取频次&#xff0c;并且改动较小时那就非常适合利用缓存来提高性能JVM 缓存使用全局变量&#xff0c;如 Map、List等容器用于存放数据&#xff0c;可以认为是堆缓存ehcacheehcache直接在jvm虚拟机中缓存&am…

SpringBoot获取配置文件常量值

在我们你的日常开发中&#xff0c;经常会有一些常量&#xff0c;变动较少&#xff0c;但是我们不能在java代码中写死&#xff0c;这样每次修改都得去java代码中修改&#xff0c;引用地方较多时我们需要修改很多java文件&#xff1b;我们可以集中写在某个配置文件中&#xff0c;…

【youcans 的 OpenCV 例程200篇】186.图像金字塔之拉普拉斯金字塔

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】186.图像金字塔之拉普拉斯金字塔 图像金字塔是一种以多分辨率来解释图像的结构&#xff0c;常用于图像分割、图像压缩和机器视觉。 图像金字塔是一系列来源于同一张原始图像、以金字塔形状排列的分辨率逐步…

java string format s_JAVA字符串格式化-String.format()的使用

常规类型的格式化String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法&#xff0c;两者有类似之处。format()方法有两种重载形式。format(String format, Object... args) 新字符串使用本地语言环境&#xff0c…

【youcans 的 OpenCV 例程200篇】187.由拉普拉斯金字塔还原图像

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】187.由拉普拉斯金字塔还原图像 图像金字塔是一系列来源于同一张原始图像、以金字塔形状排列的分辨率逐步降低的图像集合。从底层图像可以看清更多细节&#xff0c;从顶层图像可以看到更多的轮廓特征。通常&…

wifidog java_wifidog 配置中文说明

#网关IDGatewayID default#外部网卡ExternalInterface eth0#无线网卡GatewayInterface eth0#无线IPGatewayAddress 192.168.1.1#路由状态HTMLHtmlMessageFile wifidog-msg.html#验证服务器#AuthServer {# Hostname (Mandatory; Default: NONE)# SSLAvail…

整型和浮点型之间的转化

在Java中&#xff0c;我们如何将整型转化为浮点型&#xff0c;或者我们如何将浮点型转化成整型的呢&#xff1f; 结果演示 代码演示 package com.ten;public class Zidongzh {public static void main(String[] args) {double a 127.0;float b(float)a;float c(float)b;int…

【youcans 的 OpenCV 例程200篇】188.基于拉普拉斯金字塔的图像融合

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】188.基于拉普拉斯金字塔的图像融合 图像金字塔是一系列来源于同一张原始图像、以金字塔形状排列的分辨率逐步降低的图像集合。从底层图像可以看清更多细节&#xff0c;从顶层图像可以看到更多的轮廓特征。通…

leetcode combinations java_[LeetCode][Java] Combinations

题目&#xff1a;Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.For example,If n 4 and k 2, a solution is:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]题意:给定两个整数 n 和 k&#xff0c;返回1 ...n中k个数字的全部的组合。…

【youcans 的 OpenCV 例程200篇】189.基于掩模的拉普拉斯金字塔图像融合

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】189.基于掩模的拉普拉斯金字塔图像融合 图像金字塔是一系列来源于同一张原始图像、以金字塔形状排列的分辨率逐步降低的图像集合。从底层图像可以看清更多细节&#xff0c;从顶层图像可以看到更多的轮廓特征…

中奖程序

使用Java做了一个中奖程序&#xff0c;程序中已经设置中奖的号码&#xff0c;根据文本提示会让你输入四个数字&#xff0c;当你输入你的四个数字之后程序会给出你是否中奖的结果显示。 结果演示 代码演示 package com.ten; import java.util.Scanner; public class ZhongJi…

java search 不能使用方法_java – 无法使用TERMS QUERY从ELASTIC SEARCH查询字母数字字段...

我试图使用TERMS QUERY从索引查询字母数字值,但它没有给我输出.查询&#xff1a;{"size" : 10000,"query" : {"bool" : {"must" : {"terms" : {"caid" : [ "A100945","A100896" ]}}}},"…

【youcans 的 OpenCV 例程200篇】190.基于图像分割的图像融合

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】190.基于图像分割的图像融合 两张图像直接进行加法运算后图像的颜色会改变&#xff0c;通过加权加法实现图像混合后图像的透明度会改变&#xff0c;都不能实现图像的叠加。 实现图像的叠加&#xff0c;需要…

【youcans 的 OpenCV 例程200篇】191.基于图像分割的金字塔图像融合

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】191.基于图像分割的金字塔图像融合 拉普拉斯金字塔将源图像分解到不同的频带&#xff0c;越高频的图像信息越到上层。在相同显示尺寸下比较不同分辨率的拉普拉斯图像&#xff0c;可以发现不同尺度下关注的细…

java103 101 104 101_编写一个java程序将100,101,102,103,104,105这6个数以数组的形式写入到D:\\test.t...

展开全部你问的不明白&#xff0c;我在代码里给你写了&#xff0c;你自己看吧import java.io.FileWriter;import java.io.IOException;import java.util.Date;import java.util.Scanner;public class Test {public static void main(String[] args) {// 100,101,102,103,104,10…

IDEA快捷生成代码

在开发中我们常用到了许多如for循环&#xff0c;输入输出&#xff0c;if语句等&#xff0c;那么我们如何使用IDEA开发工具自动生成能让我们快速的编写的模板代码呢&#xff1f;&#xff1f;&#xff1f; psvm //生成main方法:public static void main(String[] args) {}sout /…

【youcans 的 OpenCV 例程200篇】192.Gabor 滤波器组的形状

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】192.Gabor 滤波器组的形状 6.5 Gabor 滤波器 Gabor 变换是一种加窗短时傅里叶变换&#xff0c;以高斯函数作为短时傅里叶变换的窗函数&#xff0c;因此可以在频域不同尺度、不同方向上提取特征。 Gabor 函…

悬浮窗java_Java制作一个简易的悬浮窗/PPT悬浮窗

电脑日常使用过程中&#xff0c;我们常常可以看到许多软件有悬浮窗&#xff0c;方便快捷&#xff0c;甚至有的还可以在PPT里面使用。这是怎么实现的呢&#xff1f;今天我就来分享一下Java制作一个简单悬浮窗的方法&#xff0c;可以在PPT里面使用。运行效果&#xff1a;其实悬浮…

【youcans 的 OpenCV 例程200篇】193.基于Gabor 滤波器的特征提取

OpenCV 例程200篇 总目录-202205更新 【youcans 的 OpenCV 例程200篇】193.基于Gabor 滤波器的特征提取 6.5 Gabor 滤波器 Gabor 变换是一种加窗短时傅里叶变换&#xff0c;以高斯函数作为短时傅里叶变换的窗函数&#xff0c;因此可以在频域不同尺度、不同方向上提取特征。 G…

java设置行显示复选框_java spring cheakbox复选框怎么行或者列删除添加

展开全部你好&#xff01;使用原62616964757a686964616fe78988e69d8331333431353366生js实现&#xff0c;还是可以使用其他框架&#xff1f;我这里有个基于jquery的实现&#xff1a;$(document).ready(function(){function Info(id, name, birthday, workDate, skill, experien…