【发布时间】:2021-10-16 06:52:58
【问题描述】:
我试图理解为什么 LabView 显示图像的一组值,而 OpenCV 显示另一组值。
我有两个 U16 灰度 PNG 图像,我试图将它们垂直组合以创建一个连续图像。大多数像素接近零或低值,ROI 的像素值位于 U16 范围的中间。在 Python 中,这是通过使用 OpenCV 读取文件,使用 numpy 组合图像,然后使用 Matplotlib 显示值来实现的:
image_one = cv2.imread("..\filename_one.png", cv2.IMREAD_UNCHANGED)
image_two = cv2.imread("..\filename_two.png", cv2.IMREAD_UNCHANGED)
combined_image = numpy.concatenate((image_one, image_two), axis=0)
plt.figure(figsize=(15, 15), dpi=18) plt.imshow(combined_image,
cmap="gray", vmin=0, vmax=65535) //Sliced to show the ROI
双重曝光图像
如上所示,这表明图像具有两个不同的动态范围,从而导致不同的曝光。为了标准化图像,我们可以尝试重新缩放以利用相同的动态范围。
rescaled_one = ((image_one - image_one.min()) / (image_one.max() -
image_one.min())) * 65535 rescaled_two = ((image_two -
image_two.min()) / (image_two.max() - image_two.min())) * 65535
combined_rescaled = numpy.concatenate((rescaled_one, rescaled_two),
axis=0)
plt.figure(figsize=(15, 15), dpi=18) plt.imshow(combined_irescaled,
cmap="gray", vmin=0, vmax=65535) //Sliced to show the ROI
重新缩放的图像 - 双重曝光
这仍然显示图像存在相同的问题。
在 LabView 中,为了垂直组合图像,我调整了一个已发布的 VI,用于水平拼接图像: https://forums.ni.com/t5/Example-Code/Stitch-Images-Together-in-LabVIEW-with-Vision-Development-Module/ta-p/3531092?profile.language=en
最终的 VI 框图如下所示:
VI 框图 - 使用 IMAQ 垂直组合图像
您在前面板上看到的输出:
单一连续图像 - 前面板
双重曝光问题似乎已经消失,图像现在显示为单个连续图像。这对我来说没有任何意义,所以我使用 Plotly 绘制了如下结果:
fig = plty.subplots.make_subplots(1, 1, horizontal_spacing=0.05)
fig.append_trace(go.Histogram(x=image_one.ravel(), name="cv2_top",
showlegend=True, nbinsx = 13107), 1, 1)
fig.append_trace(go.Histogram(x=image_two.ravel(), name="cv2_bottom",
showlegend=True, nbinsx = 13107), 1, 1)
fig.append_trace(go.Histogram(x=lv_joined[:1024, :].ravel(),
name="LabView_joined_top", showlegend=True, nbinsx = 13107), 1, 1)
//First Image
fig.append_trace(go.Histogram(x=lv_joined[1024:,:].ravel(), name="LabView_joined_bottom", showlegend=True, nbinsx =
13107), 1, 1) //Second Image fig.update_layout(height=800) fig.show()
直方图 - Python 与 Labview 各自的一半 - 专注于低 像素
这里显示第二张图片的像素值已被“压缩”以找到与第一张图片相同的分布。我不明白为什么会这样。我是否在 LabView 中配置了错误,或者在使用 OpenCV 读取文件时没有考虑到某些问题?
原图:
【问题讨论】:
标签: python opencv labview grayscale