我正在尝试使用多通道文件来训练unet分类。
我的数据集是5 * 1通道和1 * 3通道图像,我希望它可以是8通道.npy文件。
我使用np.concatenate来合并,但它不能应用于单通道图像。下面是我的代码:
for i in range(6):
img = data[i]
images.append(img)
img_batch = np.concatenate(images, axis=3)
字符串
因此,它应该首先将1通道图像扩展为3通道,然后连接,然后扩展为18通道.mpy文件
Image.open("class1_image1.jpg").convert("RGB") #expand 1-channel-image to 3-channel image
型
有没有一种方法可以将多个图像合并到一个多通道.npy文件中,而不需要扩展单通道图像?
或者18通道和8通道是同一个文件的unet分类任务?
1条答案
按热度按时间57hvy0tb1#
您能否提供图像(至少1通道图像)?不管图像有多少通道,或者即使图像有不同数量的通道,但我将做一个合并两个3通道图像和一个1通道图像的示例:
我们可以通过将图像插入第4维(然后在第4维上求和),将图像的RGB(或任何第3维通道)值与
numpy
合并。首先,我们有一些图像(不管我们如何获得它们,我只是在这个例子中使用了Google图像),并确保它们的大小相同:
字符串
image1
:x1c 0d1x的数据
image2
:的
image3
(仅1通道):的
image3
(在第3维度中级联之后,因此3通道;如下所述):的
我们将不得不通过在第三维中使用
numpy
的concatenate
函数来扩展图像列表中通道数小于最大值的图像:型
我们将不得不归一化RGB(或第三维通道)值,所以这里有一个函数来做到这一点:
型
下面是
images
numpy
零数组,我们通过枚举list_of_images
并将每个_image
插入到第4维来填充:型
我们可以使用
numpy
的sum
来合并images
(在第4个维度上求和),而不是连接:型
合并的图像(即
summed_images
):x1c4d 1x的
代码如下:
型
如果您使用
Image
from
PIL
对图像文件进行open
操作,则可能必须首先将其设置为uint8
type
numpy
array
:型