首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何隐藏深度图以选择图像中最黑暗的值?

如何隐藏深度图以选择图像中最黑暗的值?
EN

Stack Overflow用户
提问于 2021-01-03 18:22:09
回答 1查看 1.1K关注 0票数 0

我的问题是什么?

我使用DenseDepth从单目图像生成深度图。我的一些结果如下。我需要帮助掩盖最黑暗的阴影/灰色的最黑暗值在一定范围内的深度地图。

我希望能给出两个十六进制值。#6E6E6E和#000000,并为掩码选择所有介于

然后产生一个黑白面具。

我试过什么?

经过一些研究之后,我在这里发现了这样的情况:https://medium.com/@offsouza/segmentando-objetos-pela-cor-opencv-487d5181b473 (使用,我认为它是西班牙语的)

下面是我试图在这个具体示例中使用的深度图:

下面是我使用的python代码:

代码语言:javascript
复制
import cv2
import numpy as np

image = cv2.imread('DepthMap.png')
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
blur = cv2.medianBlur(hsv ,11)

lower = np.array([0,0,35])
upper = np.array([0,0,44])

mask = cv2.inRange(blur, lower, upper)
res = cv2.bitwise_and(image,image, mask= mask)            

cv2.imshow("mask ",mask)
cv2.imshow('stack', np.hstack([image, res]))
cv2.waitKey(0)

这是代码的输出:

但是,这不允许我给出两个十六进制值,然后选择所有介于两者之间的值,而是需要指定上值和下值。为此,我在这里使用了以下脚本:color.py

正如您可能知道的那样,这并不是最好的结果--从某种程度上说,不工作。我对这个领域知之甚少,所以如果你能帮助我,我会非常感激的!

编辑:这是对预期结果的手绘表示:

https://i.ibb.co/n8JkSf3/C051-EAE8-C114-4-E90-8938-25-A8-C79-A4-A7-E.jpg

EN

回答 1

Stack Overflow用户

发布于 2021-01-04 09:51:13

为了更好地解决我的问题,并允许将其推广到广泛的深度图中,我采取了不同的方法来达到相同的目标。

而不是选择上下颜色范围,这似乎提供了不一致的结果时,测试的各种图像。我选择了使用全局阈值。

thresholding.html

我进一步修改了我的代码,将灰度的平均(而非显性)亮度除以2,从而给出了25%最黑暗的灰度区域,并将其作为我的阈值。这有效地完成了我的目标。

这是我的代码.

代码语言:javascript
复制
import cv2
import numpy as np

# Only for the threshold display
from matplotlib import pyplot as plt

# The Image to be used
image = 'DepthMap.png'

# Finding the average greyscale value
image_bgr = cv2.imread(image, cv2.IMREAD_GRAYSCALE)

# Calculate the mean of each channel
channels = cv2.mean(image_bgr)
# Type Float
thresh = channels[0]/2
#print (thresh)

# Displaying the threshold value

img = cv2.imread(image,0)
img = cv2.medianBlur(img,5)

# If below then black else white 
ret,th1 = cv2.threshold(img,thresh,255,cv2.THRESH_BINARY)


titles = ['Original Image', 'Global Thresholding']
images = [img, th1]

for i in range(2):
    plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])

# Shows single image on its' own
'''
plt.imshow(images[1], 'gray')
plt.xticks([]),plt.yticks([])
'''
plt.show()

DepthMap.png:

输出:

为了证明这在其他图像上有效,我还在另一个深度图:上测试了相同的代码

输入:

输出:

虽然可以在两幅图像中看到最暗的值是不同的,但是该算法已经适应并且仍然有效,这意味着这也可以用于视频深度图,而不需要不断的调整。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65553353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档