【发布时间】:2020-01-15 09:44:14
【问题描述】:
基本上我的任务涉及将二维温度场(2D 矩阵)转换为图像(以保持分辨率),然后对图像进行一些图像处理,然后将其转换回温度场。例如,如果我的温度字段是一个包含 25x25 单元格的网格,那么我的图像应该具有 25x25 像素的分辨率。
另外,由于我的温度场会有浮点值,我希望将浮点值保留在图像中,然后能够提取相同的值。
我尝试了以下方法:
我有一个代表一些物理场(如温度)的 numpy 数组,我想将其转换为图像以进行进一步处理。但是在创建图像时,matplotlib 的 cmap 似乎是 python 中保留分辨率的唯一选项。
但是当我将 numpy 数组保存到颜色图中时,生成的图像似乎是 4 通道图像,而我想要 3 通道图像。
我的问题有解决办法吗?
使用的代码是:
import matplotlib as plt
cmap = plt.cm.jet
norm = plt.Normalize(vmin=temp.min(), vmax=temp.max())
# Map the normalized data to colors.
image = cmap(norm(temp))
# Save the image
plt.imsave('temperature2image.png', image)
# Display the image
plt.pcolor(image)
##### PROCESS THE IMAGE #################
temp_after_processing = plt.imread('processed_image.png')
编辑: 另外,谁能告诉我是否有办法将 3 通道或 4 通道图像转换回包含温度值的二维矩阵?
【问题讨论】:
-
您可以在之后移除 Alpha 通道,如 stackoverflow.com/questions/9166400/…
-
使用 to_rgb 函数转换为 rgb。 colormap 默认将值转换为 rgba。
-
另外,有没有办法将处理后的 3 通道图像映射回包含温度值的二维矩阵?
-
你可以像
image[:, :, :3]一样切掉额外的通道...但是你在做什么图像处理?也许你可以在阵列上做到这一点。或者在灰度图像(即普通的二维数组)上进行。其中任何一个都可能比将 3 通道图像转换回单色图像(即 2D 阵列)更容易。 -
我想对图像执行一些计算机视觉任务。是的,使用灰度图像而不是转换为 3 通道图像是一种可能性。但不考虑这一点,我想知道是否有办法将 3 通道图像转换回 2D 矩阵。
标签: python-3.x numpy matplotlib image-processing