使用skimage.color.gray2rgb会产生错误的输出图像

时间:2019-06-11 00:22:50

标签: image-processing grayscale

您好,我只是想编写代码以将灰度图像设置为三通道图像格式,然后显示它。我正在使用skimage.color函数gray2rgb,它确实改变了单比例图像矩阵的形状。但是,当想要绘制该转换的结果时,我得到了意外的图像作为输出。

我也很难创建一个空的3通道图像,以用我想要的任何单尺度信息填充它。显然由于uint16图片的特性,matplotlib存在一些问题

我尝试了np.vstack,skimage.color.gray2rgb。它们全部产生相同的输出。 我尝试使用np.uint8将65535最大像素值转换为255,但无法正常工作。看来分工有效

from skimage.io import imread, imshow
import matplotlib.pyplot as plt
import os
import numpy as np
img = imread('516.jpg')
img_uint8 = np.uint8(img)
from skimage.color import gray2rgb
from skimage import img_as_float
img_rgb = gray2rgb(img_uint8, alpha=None)
print(img_rgb.shape)
plt.imshow(img_rgb)

显示的图像不是预期的!!!!

我希望图像类似于原始图像,但可能具有不同的颜色,因为它在所有3个通道中都应该是相同的图像。 我认为问题出在我的图片的np.uint8。我用摄影师的图像进行了测试,没问题

1 个答案:

答案 0 :(得分:0)

我不知道为什么,但是使用 img_as_ubyte 似乎可以在三个通道中复制灰色图像,并能够显示类似于原始图像的图像

vector<int, string> vect;

不知道为什么np.uint8产生的结果已更改。某种程度上也使用openCV读取似乎总是将图像放在uint8范围内,这可能很方便。 我等待你的评论

Original Image used for testing This is what np.uint8 seems to be producing