python-图像金字塔及图像梯度

python-图像金字塔及图像梯度

2023年6月29日发(作者:)

python-图像⾦字塔及图像梯度python-图像⾦字塔及图像梯度⼀、图像⾦字塔1.相关概念"""⽣活中有时在不同分辨率下处理(相同的)图像,例如,当在图像中搜索某个东西时,⽐如⼈脸,不确定该对象在该图像中的⼤⼩创建⼀组具有不同分辨率的相同图像,并在所有这些图像中搜索对象,这些具有不同分辨率的图像集被称为图像⾦字塔⾼斯⾦字塔: ⾼斯⾦字塔中的⾼阶(低分辨率)是通过去除低阶(⾼分辨率)图像中连续的⾏和列⽽形成的向下采样 dst=n(img) dst为⽬标图像 img为原始图像 注意: 1.默认输出图像⼤⼩长宽为原来的⼀半 2.向下采样,分辨率降低向上采样 dst=(img) 和向下采样参数⼀致采样可逆性⼀幅图像先向下采样,再向上采样,虽然会恢复为原始⼤⼩,图像看起来相似,但是像素值是不⼀致的拉普拉斯⾦字塔: 拉普拉斯⾦字塔是由⾼斯⾦字塔构成,没有专门的函数,它的⼤部分元素都是0,⽤于图像压缩 它的层次是由⾼斯⾦字塔中的层次与⾼斯⾦字塔中其上层次的扩展后的层次之差形成的"""2.⾼斯⾦字塔2.1 向下采样#

向下采样import cv2import as pltimg=('img_',0)r1 =n(img)r2 =n(r1)r3 =n(r2)print()print()print()print()t(2,2,1)(img,cmap='gray')('img')t(2,2,2)(r1,cmap='gray')('r1')t(2,2,3)(r2,cmap='gray')('r2')t(2,2,4)(r3,cmap='gray')('r3')()2.2 向上采样原理import cv2import numpy as np# pyrdown原理img1 = t(0,10,size=100,dtype=8) #

随机创建⼀个数组img1 = e(10,10)print(img1)r1 = n(img1)print(r1)#

⼿动⽣成⾼斯核,可以⾃动⽣成⾼斯核kernel = ([[1,4,6,4,1], [4,16,24,16,4], [6,24,36,24,6], [4,16,24,16,4], [1,4,6,4,1]])kernel =kernel/256#

⾼斯核与原图像进⾏卷积dst = 2D(img1,-1,kernel)#

除去偶数⾏和偶数列dst2 = ((5,5),dtype=8)for i in range(10): if i%2==0: for j in range(10): if j%2==0: dst2[int(i/2),int(j/2)]=dst[i,j]print(dst2)print(r1==dst2)2.3 向上采样#

向上采样import cv2import as pltimg=('img_',0)u1 =(img)u2 =(u1)u3 =(u2)t(2,2,1)(img,cmap='gray')('img')t(2,2,2)(u1,cmap='gray')('u1')t(2,2,3)(u2,cmap='gray')('u2')t(2,2,4)(u3,cmap='gray')('u3')()2.4 采样可逆性#

采样可逆性import cv2import as pltimg=('img_',0)r1 =n(img)r2 =n(r1)r3 =n(r2)t(2,4,1)(img,cmap='gray')('img')t(2,4,2)(r1,cmap='gray')('r1')t(2,4,3)(r2,cmap='gray')('r2')t(2,4,4)(r3,cmap='gray')('r3')u1 =(r1)u2 =(r2)u3 =(r3)t(2,4,5)(img,cmap='gray')('img')t(2,4,6)(u1,cmap='gray')('u1')t(2,4,7)(u2,cmap='gray')('u2')t(2,4,8)(u3,cmap='gray')('u3')()s1 =ct(img,u1)s2 =ct(r1,u2)t(1,3,1)(s1,cmap='gray')('s1')t(1,3,2)(s2,cmap='gray')('s2')()3.拉普拉斯⾦字塔#

拉普拉斯⾦字塔import cv2import as pltimg=('img_',0)r1 =n(img)r2 =n(r1)s1 =(r1)s2 =(r2)t(2,2,1)(img,cmap='gray')('img')t(2,2,2)(s1,cmap='gray')('s1')t(2,2,3)(s2,cmap='gray')('s2')()⼆、图像梯度1.相关函数"""sobel算⼦dst = (img,depth,dx,dy,[ksize]):计算sobel算⼦的梯度 dst:计算结果 depth:处理图像深度,通常设为-1,让处理结果与原始图像保持⼀致 dx:x轴⽅向 dy:y轴⽅向 ksize:核⼤⼩在实际操作中,计算梯度值可能会出现负数。通常处理的图像是8类型,如果结果也是该类型,所有负数会⾃动截断为0,发⽣信息丢失,所以,通常计算时,使⽤更⾼的数据类型_64F,取绝对值后,再转换为8(_8U)类型,Scharr算⼦dst=(img,depth,dx,dy)等价于dst=Sobel(img,depth,dx,dy,-1)拉普拉斯算⼦dst=ian(img,depth) dst:计算结果 depth:处理图像深度,通常设为-1,让处理结果与原始图像保持⼀致dst=tScaleAbs(img,[,alpha[,beta]]):将原始图像img转换为256⾊位图 公式:⽬标图像=调整(原始图像*alpha+beta)dst=ghted(img1,alpha,img2,beta,gamma):计算两幅图像的权重 dst=计算结果 img1:源图像1 alpha:源图像1的系数 img2:源图像2 beta:源图像2的系数 gamma:修正值"""算⼦# sobel算⼦import cv2img=('img_')s_x =(img,_64F,1,0)s_y = (img,_64F,0,1)s_x=tScaleAbs(s_x)s_y=tScaleAbs(s_y)s_xy=ghted(s_x,0.5,s_y,0.5,0)('img',img)('s_x',s_x)('s_y',s_y)('s_xy',s_xy)y(0)yAllWindows()算⼦# Scharr算⼦import cv2img=('img_')schx = (img,_64F,1,0)schy = (img,_64F,0,1)schx = tScaleAbs(schx) #

转回uint8schy = tScaleAbs(schy)schxy=ghted(schx,0.5,schy,0.5,0)('img',img)('schx',schx)('schy',schy)('schxy',schxy)y(0)yAllWindows()ian算⼦#

拉普拉斯算⼦import cv2img=('img_',0)la = (img,_64F,1,0)la = tScaleAbs(la) #

转回('img',img)('la',la)y(0)yAllWindows()

发布者:admin,转转请注明出处:http://www.yc00.com/web/1687977223a62834.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信