python opencv 图像处理(八)

简介: python opencv 图像处理(八)

图像金字塔


图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。


cv2.pyrUp: 上采样

cv2.pyrDown: 下采样

有两种经典的金字塔:高斯金字塔和拉普拉斯金字塔,前者采用向下采样,后者是向上采样需要的缺失的信息。


向下采样(生成高斯金字塔)的具体操作为: 从大到小

    1. 对图像进行高斯卷积

    2. 删除所有的偶数行和偶数列


向上采样的缺失信息(生成拉普拉斯金字塔)的具体操作为:从小到大

    1. 首先将维数扩大两倍

    2. 将扩大位的值置为0

    3. 对新的图像进行高斯卷积

    4. 用新的层次的高斯金字塔减去 3 中形成的图像


2021071410333378.png

import cv2
import numpy as np
img = cv2.imread('data.jpg')
up = cv2.pyrUp(img)   # 上采样
down = cv2.pyrDown(img) # 下采样
cv2.imshow('img',img)
cv2.imshow('up',up)
cv2.imshow('down',down)
cv2.waitKey(0)
cv2.destroyAllWindows()


图像进行上采样,再下采样,或者先下采样,再上采样,无法恢复原图清晰度


直方图


可以将直方图视为图形或者绘图,从而总体了解图像的强度分布。它是在x轴上具有像素值(0~255的范围),在y轴上具有图像中相应像素值的数量。

cv2.calcHist(images,channels,mask,histSize,ranges)


images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]

channels:同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是[0][1][2] 它们分别对应着 BGR。

mask: 掩模图像。统整幅图像的直方图就把它为 None。但是如果你想统图像某一分的直方图的你就制作一个掩模图像并 使用它。

histSize:BIN 的数目,也应用中括号括来

ranges:像素值范围常为 [0-256]


import cv2 #opencv读取的格式是BGR
import numpy as np
import matplotlib.pyplot as plt#Matplotlib是RGB
%matplotlib inline 
def cv_show(img,name):
    cv2.imshow(name,img)
    cv2.waitKey()
    cv2.destroyAllWindows()
img = cv2.imread('data.jpg',0) #0表示灰度图
hist = cv2.calcHist([img],[0],None,[256],[0,256])
# hist.shape  # (256,1) 256指0-255的256个像素; 1指1维,像素x 多少多少个
plt.hist(img.ravel(),256);  # 此处不显示图像,用plt展示方便,若用cv2,要进行颜色转换
plt.show()

image.png

分别显示3个颜色通道的直方图


img = cv2.imread('data.jpg') 
color = ('b','g','r')
for i,col in enumerate(color): 
    histr = cv2.calcHist([img],[i],None,[256],[0,256]) 
    plt.plot(histr,color = col) 
plt.xlim([0,256]) 
plt.show()

20210714105132175.png



相关文章
|
5天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
|
5天前
|
计算机视觉 Python
【Python实战】——Python+Opencv是实现车牌自动识别
【Python实战】——Python+Opencv是实现车牌自动识别
|
5天前
|
算法 计算机视觉
【OpenCV】计算机视觉图像处理基础知识(下)
【OpenCV】计算机视觉图像处理基础知识(下)
|
5天前
|
人工智能 计算机视觉 Python
【OpenCV】计算机视觉图像处理基础知识(上)
【OpenCV】计算机视觉图像处理基础知识(上)
|
5天前
|
算法 Serverless 计算机视觉
使用OpenCV和Python进行极线校正
使用OpenCV和Python进行极线校正
16 1
|
5天前
|
算法 安全 机器人
最新版opencv4.9安装介绍,基本图像处理详解
最新版opencv4.9安装介绍,基本图像处理详解
|
5天前
|
机器学习/深度学习 算法 自动驾驶
opencv python 图片叠加
【4月更文挑战第17天】
|
5天前
|
数据挖掘 计算机视觉 Python
SciPy图像处理技巧:图像增强与特征提取
【4月更文挑战第17天】本文介绍了如何使用SciPy进行图像增强和特征提取。通过调整亮度、对比度和伽马校正实现图像增强,示例代码展示了相关操作。同时,利用Sobel算子进行边缘检测和Laplacian of Gaussian (LoG) 进行角点检测,以提取图像特征。虽然SciPy不是专业的图像处理库,但其数值计算能力在图像分析中仍有一定价值,可与其他图像处理库结合使用。
|
5天前
|
机器学习/深度学习 存储 算法
OpenCV与NumPy:图像处理中的黄金组合
【4月更文挑战第17天】OpenCV和NumPy是Python图像处理的两大利器,互补协作形成黄金组合。OpenCV专注计算机视觉,提供丰富算法,而NumPy擅长数值计算和数组操作。两者无缝对接,共同实现高效、灵活的图像处理任务。通过灰度化、二值化、边缘检测等案例,展示了它们的协同作用。未来,这一组合将在计算机视觉和机器学习领域发挥更大作用,解锁更多图像处理潜力。
|
5天前
|
机器学习/深度学习 算法 Linux
使用OpenCV在Python中进行图像处理
使用OpenCV在Python中进行图像处理