【问题标题】:OpenCV vs Labview Images Greyscale (U16) - Difference in valuesOpenCV 与 Labview 图像灰度 (U16) - 值的差异
【发布时间】: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


    【解决方案1】:

    请参阅此处发布的答案:[https://forums.ni.com/t5/LabVIEW/OpenCV-vs-Labview-Images-Greyscale-U16-Difference-in-values/td-p/4172150/高亮/错误]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 2014-09-15
      • 2013-07-28
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多