opencv学习笔记(七)---图像金字塔
图像金字塔指的是同一图像不同分辨率的子图的集合,有向下取样金字塔,向上取样金字塔,拉普拉斯金字塔....它是图像多尺度表达的一种,最主要的是用于图像的分割
向下取样金字塔指高分辨率图像向低分辨率图像的转换,从第i层获得第i+1层的步骤(G[i]->G[i+1])
1.对图像G【i】进行高斯卷积,卷积核为得到一个新的高斯模糊后的图像,
2.对新图像删除所有偶数行和偶数列(像素),得到缩小为原图四分之一的新图,即G[i+1]
上述操作称为Octave。
重复下去,可以不断缩小图像(每次变为原图的四分之一),但会丢失一些图像。
向上取样金字塔指低分辨率图像向高分辨率图像的转换,从第i层获得第i+1层的步骤(G[i]->G[i+1])
1.每个方向上扩大为原来的二倍,即增加行和列,新增的行和列以0填充
2.使用与向下取样同样的卷积核的4倍对每一个像素处理,得到新图
但想上去样是一个模糊图像,不能得到新的信息。
(向上取样和向下取样不是互逆的)
向下取样:Python: cv2.pyrDown(src[, dst[, dstsize]]) → dst
向上取样:Python: cv2.pyrUp(src[, dst[, dstsize]]) → dst
一般只需要src一个参数即可
import cv2 as cv
import numpy as np #图像金字塔
img = cv.imread("E:/pictures/lena.jpg")
down = cv.pyrDown(img) #向下取样
up = cv.pyrUp(down) #向上取样
cv.imshow("up",up)
diff = img-up
cv.imshow("diffenent",diff) #比较和原图的差异
cv.imshow("orginal",img)
cv.imshow("down",down)
cv.waitKey()
cv.destroyAllWindows()
拉普拉斯金字塔:向上取样是图像的尺度变大,向下取样是图像的尺度变大,拉普拉斯金字塔:L[i] = G[i] - pyrUp(pyrDown(src))(L[i]表示i层拉普拉斯图像,G[i]表示原图)也就是上述代码的diffent图像,是在高斯金字塔的基础上构造的金字塔,意思是拉普拉斯金字塔每一层的图像为同一层高斯金字塔的图像减去上一层的图像进行上采样并高斯模糊的结果。说的有点绕,可以看网上的这幅图进行理解
实现起来很简单:
img = cv.imread("E:/pictures/lena.jpg")
down = cv.pyrDown(img)
up = cv.pyrUp(down)
L1 = img-up #1层拉普拉斯图像 down2 = cv.pyrDown(down)
up2 = cv.pyrUp(down2)
L2 = down-up2 #2层拉普拉斯图像
#以此类推..........
cv.imshow("orginal",img)
cv.imshow("L1",L1)
cv.imshow("L2",L2)
cv.waitKey()
cv.destroyAllWindows()
opencv学习笔记(七)---图像金字塔的更多相关文章
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...
- OpenCV学习笔记(10)——图像梯度
学习图像梯度,图像边界等 梯度简单来说就是求导. OpenCV提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr和Lapacian.Sobel,Scharr其实就是求一阶或二阶导. ...
- OpenCV学习笔记(7)——图像阈值
简单阈值,自适应阈值,Otsu's二值化等 1.简单阈值 当像素值高于阈值时,我们给这个像素赋予一个新值,否则给他赋予另一个值.这个函数就是cv2.threshhold().这个函数的第一个参数就是原 ...
- opencv学习笔记(六)---图像梯度
图像梯度的算法有很多方法:sabel算子,scharr算子,laplacian算子,sanny边缘检测(下个随笔)... 这些算子的原理可参考:https://blog.csdn.net/poem_q ...
- opencv学习笔记(五)----图像的形态学操作
图像的形态学操作有基本的腐蚀和膨胀操作和其余扩展形态学变换操作(高级操作)-----开运算,闭运算,礼帽(顶帽)操作,黑帽操作...(主要也是为了去噪声,改善图像) 形态学操作都是用于处理二值图像(其 ...
- opencv学习笔记3——图像缩放,翻转和阈值分割
#图像的缩放操作 #cv.resize(src,dsize,dst=None,,fx=None,fy=None,interpolation=None) #src->原图像,dsize->目 ...
- OpenCV学习笔记(3)——图像的基本操作
获取图像的像素值并修改 获取图像的属性(信息) 图像的ROI() 图像通道的拆分及合并 1.获取并修改像素值 先读入图像装入一个图像实体,然后该实体相当于一个多维list,可以直接用数组操作提取像素信 ...
- OpenCV学习笔记七:opencv_nonfree模块
一,简介: 顾名思义,这个模块不是free的.主要包含: 1,SIFT implementation. The class implements SIFT algorithm by D. Lowe. ...
随机推荐
- Opencv 图像矩
#include <iostream>#include <opencv2/opencv.hpp> using namespace std;using namespace cv; ...
- 274. H-Index论文引用量
[抄题]: Given an array of citations (each citation is a non-negative integer) of a researcher, write a ...
- sql优化 原因
不使用子查询例: SELECT * FROM t1 WHERE id (SELECT id FROM t2 WHERE name='hechunyang'); 子查询在MySQL5.5版本里,内部执行 ...
- XSS的原理分析与解剖:第三章(技巧篇)【转】
0×01 前言: 关于前两节url: 第一章:http://www.freebuf.com/articles/web/40520.html 第二章:http://www.freebuf.com/art ...
- 一个新手后端需要了解的前端核心知识点之position(一)
以下内容是基于观看慕课网视频教程总结的知识点,边打代码边总结,符合自己的思维习惯.不是针对新手入门 我做程序的初衷是想做一个网站出来.HTML语言当然重要啊,缺什么就百度什么,很浪费时间,还是好好的打 ...
- 3.3.5 高效读取:不变模式下的CopyOnWriteArrayList
源码分析:读写(get,add) 一:get 方法 private E get(Object[] a, int index) { return (E) a[index];}可以看到读取数据的时候 没有 ...
- Dubbo的配置及启动
Tomcat+Dubbo安装 1.将tomcat的webapps目录下的所有文件清空,讲Dubbo管理控制台的程序dubbo-admin-2.5.3.war放 到webapps中,并且解压命名为ROO ...
- javascript总结41:表格全选反选,经典案例详解
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- ubuntu同时安装Qt4.8和Qt5.7[认真写每篇博客^-^]
这是ubuntu默认安装(从apt安装)的路径和相关文件,建议编译安装到/opt目录下. 从APT安装的默认文件夹 以下是我的安装情况,配置为qt4.8为默认. 安装包或源码下载地址: qt4:htt ...
- 编写高质量代码改善C#程序的157个建议——建议114:MD5不再安全
建议114:MD5不再安全 MD5不再安全不是就算法本身而言的.如果从可逆性的角度出发,MD5值不存在被破解的可能性. MD5被广泛应用于密码验证和消息完整性验证.假设新注册一个用户,当注册用户的密码 ...