(Python代码)通过视差图获取图片中不同物体的高度比

1、原理

 可以推出不同物体的高度比可以通过如下公式得到:

 

 h_{l} 是左边指定物体的高度(图片中尺寸)

h_{r} 是右边指定物体的高度(图片中尺寸)

 d_{l} 是左边指定物体的平均视差值

 d_{r} 是右边指定物体的平均视差值

 

2、代码逻辑框图

3、代码详解

import multiprocessing as mp
import numpy as np
import cv2
import time#读取图像
img5_L = cv2.imread('relative_height/3_a.jpg')
img5_R = cv2.imread('relative_height/3_b.jpg')
img_L=img5_L
img_R=img5_R#功能:获取视差图
#输入:两张图片
#输出:视差图
def disparity(img_L,img_R):stereo = cv2.StereoSGBM_create(numDisparities=48,blockSize=3)disparity = stereo.compute(img_L, img_R)return disparityrect_L = (310,36,521,759) #起点x,y, 增加至为w,h
rect_R = (835,70,590,941)#功能:截图
#输入:图片,截图范围
#输出:截图
def segment(img,rect):mask = np.zeros(img.shape[:2],np.uint8)bgdModel = np.zeros((1,65),np.float64)fgdModel = np.zeros((1,65),np.float64)cv2.grabCut(img,mask,rect,bgdModel,fgdModel,20,cv2.GC_INIT_WITH_RECT)mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8')img = img*mask2[:,:,np.newaxis]return img#功能:构建高斯核sieze和sigma
#输入:size,sigma
#输出:二维数组
def gaussian_kernel_2d(kernel_size, sigma):kx = cv2.getGaussianKernel(kernel_size, sigma)ky = cv2.getGaussianKernel(kernel_size, sigma)return np.dot(kx, np.transpose(ky))#功能:彩色图转成灰色图
#输入:彩色图img
#输出:灰色图gray_img
def color_to_gray(img):height = img.shape[0]width = img.shape[1]channels = img.shape[2]value = [0] * 3gray_img = np.zeros([height, width], np.uint8)for row in range(height):for column in range(width):for chan in range(channels):value[chan] = img[row, column, chan]R = value[2]G = value[1]B = value[0]# new_value = 0.2989 * R + 0.5870 * G + 0.1140 * Bnew_value = 0.2989 * R + 0.5870 * G + 0.1140 * B  # 转为灰度像素gray_img[row, column] = new_valuereturn gray_img#功能:获取截图的高度(像素之差)
#输入:img
#输出:高度
def object_height(img):point1=(0,0)point2 = (0, 0)height1=0height2=0for row in range(len(img)):for col in range(len(img[row])):if img[row][col] != 0:height1=rowpoint1=(row,col)breakfor row in range(len(img)-1,-1,-1):for col in range(len(img[row])):if img[row][col] != 0:height2=rowpoint2 = (row, col)breakheight=abs(height2-height1)return point1,point2,height# 功能:求平均视差值
# 输入:抠图img,视差图disparity
# 输出:平均视差值
def average_disparity_value(img,disparity):n=0value=0for row in range(len(img)):for col in range(len(img[row])):if img[row][col] != 0:n +=1value+=disparity[row][col]return value/n#功能:估计图片不同物体的实际高度比
#输入:图片img_L和img_R
#输出:图片中不同物体的实际高度比
def height_ratio(img_L,img_R):t_start = time.clock()print('compute disparity....')disparity1=disparity(img_L,img_R)disparity1 = cv2.filter2D(disparity1, -1, gaussian_kernel_2d(16, 60))print('object segment...')pool = mp.Pool(processes=mp.cpu_count() - 1) #并行处理设置res1=pool.apply_async(segment,(img_L, rect_L))#并行处理seg_L=res1.get()res2=pool.apply_async(segment, (img_R, rect_R))#并行处理seg_R = res2.get()print('color_to_gray...')seg_L=color_to_gray(seg_L)seg_R = color_to_gray(seg_R)print('computer object height...')point1_L,point2_L,height_L=object_height(seg_L)point1_R, point2_R, height_R = object_height(seg_R)d_L=average_disparity_value(seg_L, disparity1)d_R = average_disparity_value(seg_R, disparity1)t_end = time.clock()print('数据处理用时', t_end - t_start)ratio= height_L*d_R/(height_R*d_L)return ratioif __name__ == '__main__':hei_ratio5=height_ratio(img_L,img_R)print(hei_ratio5)

 

 

 

 

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

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

相关文章

一文读懂生物医学领域的传感器

来源:传感器技术摘要:生物医学传感器是生物医学科学和技术的尖兵,生物医学研究的正确结论有赖于生物医学传感器的正确测量。而传感器是一门十分综合的科学和技术。现代传感器的物理模型如图所示:对于传统被测量而言,敏…

训练数据的分布对F-measure, recall 和 precision的影响

1、 Precision, recall and F-measure(f1-score) 2、思路 数据集:手写数字集 从训练集中抽取数据,保证每种label的数量一致,使用SVM 或ANN模型训练新数据集。按照高斯分布抽取新数据, 再次使用SVM 或ANN模…

稀疏矩阵的压缩存储--十字链表(转载)

稀疏矩阵的压缩存储--十字链表&#xff08;转载&#xff09;<?xml version"1.0" encoding"UTF-8"?> 来自为知笔记(Wiz)转载于:https://www.cnblogs.com/ZhangJinkun/p/4531626.html

不可思议的数字:互联网每天到底能产生多少数据?

来源&#xff1a;资本实验室随着互联网、传感器&#xff0c;以及各种数字化终端设备的普及&#xff0c;一个万物互联的世界正在成型。同时&#xff0c;随着数据呈现出爆炸式的指数级增长&#xff0c;数字化已经成为构建现代社会的基础力量&#xff0c;并推动着我们走向一个深度…

任正非:华为5G芯片用在iPhone上?我持开放态度

来源&#xff1a;机器之心摘要&#xff1a;外媒最近频传的「华为同意卖5G基带给苹果」&#xff0c;让科技界的人们浮想联翩。刚刚&#xff0c;华为终于有了较为官方的回应&#xff1a;华为总裁任正非在接受CNBC的时候表示&#xff0c;华为对于出售5G芯片给苹果用于iPhone「持开…

阿里120页PPT诠释国家“智能+”战略

未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云…

边缘检测

1、边缘的特征 先看一张实物图和边缘图 边缘是图片中灰度变化最快的地方。下图清楚地显示了最简单的一种情况。既然找变化最快的地方&#xff0c;可以通过导数来求解边缘 2、图片的导数 一张数字图片F[x,y], 其x方向导数可定义为&#xff1a; 3、图片的梯度 3.1 图片的梯度相…

边缘计算: 与5G同行,开拓蓝海新市场

来源&#xff1a;中银国际摘要&#xff1a;随着日渐成熟的SDN/NFV、大数据、人工智能等技术&#xff0c;5G网络将成为各行业数字化转型的关键基础设施。边缘计算技术作为5G网络架构中核心的一环&#xff0c;顺随运营商边缘机房智能化改造的趋势&#xff0c;致力于解决5G网络对于…

图像重采样

图像重采样包含两种情形&#xff0c;一种是下采样&#xff08;downsampling&#xff09;&#xff0c;把图像变小&#xff1b;另一种是上采样&#xff08;upsampling)&#xff0c;把图像变大。 1、次级采样&#xff08;sub-sampling&#xff09; 每隔一个&#xff0c;扔掉行和…

haha

转载于:https://www.cnblogs.com/izxcheng/p/4539888.html

裸机开发(1)-汇编基础

文章目录 GNU汇编语法常用汇编指令处理器内部数据传输指令存储器访问指令压栈和出栈指令跳转指令算术指令逻辑运算指令实战 函数发生调用时&#xff0c;需要进行线程保护&#xff0c;简单来说&#xff0c;就是先进行压栈操作&#xff0c;将调用函数参数、返回值等存到R0-15寄存…

脑科学研究:对于学习来说,休息可能与练习同样重要...

来源&#xff1a;神经科技近日&#xff0c;在针对健康志愿者的的一项研究中&#xff0c;美国国立卫生研究院&#xff08;NIH&#xff09;的研究人员发现&#xff0c;大脑可能会通过短暂的休息来巩固我们几秒钟前刚练习过的新技能的记忆。该研究结果强调了早期休息在学习中可能发…

Harris 角点检测(Harris corner detection)

在许多应用中&#xff0c;会运用到特征提取。 比如&#xff0c;把下方两张图片缝合成一张图片。哪么从哪些地方开始缝合呢&#xff1f;这些地方可以通过特征提取找到。 1、特征 图片上的特征点应该具有怎样的特性&#xff1f; a. 图片上的特征点不随图片的变化&#xff08;平…

BoW(词袋Bag of words)

Bag-of-words词袋模型最初被用在信息检索领域。例如检索一篇文档&#xff0c;只需考虑文档中出现单词的频率&#xff0c;而不用考虑语法语序等。在图像领域&#xff0c;如果把一幅图像当作文档&#xff0c;图像中的图像块的特征向量视为文档内的词&#xff0c;BoW在图像领域也可…

欧盟最新《AI网络安全政策发展框架》

来源&#xff1a;学术plus报告主要内容编译如下下载全文报告请参见文末链接一、 概要AI进入主流商用&#xff0c;数据收集是关键在过去几年&#xff0c;人工智能&#xff08;AI&#xff09;迅速超越研究和学术范畴&#xff0c;进入主流商用&#xff0c;创新的自主代理利用人工智…

2019上海车展重磅新车前瞻

来源&#xff1a;中信建投分析师&#xff1a;余海坤、陶亦然第十八届上海国际汽车工业展览会将于2019年4月18日至25日在上海国家会展中心举行。本次车展的主题为“共创美好生活”&#xff0c;将展现世界汽车工业的创新发展&#xff0c;将汽车与信息通讯、互联网、大数据、人工智…

HDU 4190 Distributing Ballot Boxes【二分答案】

题意&#xff1a;给出n个城市&#xff0c;n个城市分别的居民&#xff0c;m个盒子&#xff0c;为了让每个人都投上票&#xff0c;问每个盒子应该装多少张票 二分盒子装的票数&#xff0c; 如果mid<m,说明偏大了&#xff0c;r应该向下逼近 &#xff0c;rmid 如果mid>m,说明…

局部特征检测器和描述符

图像匹配有三个步骤&#xff1a;检测特征点&#xff0c;特征描述和匹配 1、检测特征点 好的特征点的位置不随图像亮度变换的改变&#xff0c;只与图像的几何变换有关。 1.1 图像变换 1.1.1 几何变换&#xff1a;旋转和伸缩 1.1.2 亮度变换 1.2 Harris角点检测的性质 角点的…

5G+AI系列研究:5G元年,电子行业迎来新时代​

来源&#xff1a;国泰君安证券摘要&#xff1a;本报告作为【5GAI】系列报告的第一篇&#xff0c;主要包括两部分内容&#xff0c;PART A&#xff1a;5G带来终端射频新机遇&#xff1b;PART B&#xff1a;基站建设启动&#xff0c;产业链爆发在即。附报告部分PPT&#xff1a;未来…

卷积神经网络(CNN:Convolutional Neural Network)

1、感知器&#xff08;perceptron&#xff09; 感知器是卷积神经网络的基本单元&#xff0c;下图展示了其工作原理&#xff0c;为了方便理解&#xff0c;图中只显示了3个输入。 向量w为输入向量x的权重&#xff0c;b为偏差&#xff0c;最后对x的线性组合&#xff08;&#xff…