首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >skimage.transform.rescale在输入图像中增加了一个额外的维度

skimage.transform.rescale在输入图像中增加了一个额外的维度
EN

Stack Overflow用户
提问于 2020-10-31 07:41:45
回答 1查看 310关注 0票数 0

当使用skimage.transform.rescale()时,当输入图像仅为2维时,得到一个具有三维的输出图像数组。

代码语言:javascript
复制
from skimage import io, color, transform

image = io.imread(r'C:\Users\ParthD\PycharmProjects\pythonProject\test_images\6.png')
image_bw = color.rgb2gray(color.rgba2rgb(image))
image_rescaled = transform.rescale(image, scale=0.5, anti_aliasing=True)

print(image_bw.shape)
print(image_rescaled.shape)

为此,我得到的输出如下:

代码语言:javascript
复制
(397, 602)
(198, 301, 2)

值2的附加维在哪里被加起来,我不确定。我查看了rescale函数文档,但是没有任何参数有助于这个额外的维度。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-31 08:06:24

因此,问题在于信道维被解释为空间维数。

您应该传递transform.rescale multichannel=True标志,这样它就不会影响信道:

代码语言:javascript
复制
image_rescaled = transform.rescale(image, scale=0.5, anti_aliasing=True, multichannel=True)
  • 示例: Q=np.zeros(397,602,3) x1 = transform.rescale(q,scale=0.5,anti_aliasing=True) x2 = transform.rescale(q,scale=0.5,anti_aliasing=True,multichannel=True) x1.scale=0.5# (198,301,2) x2# (198,301,3)

因此,transform.rescale将您的数组作为一个三维形状图像(397,602,3),下降到(198,301,2),并与通道一起插值,就好像它们是另一个空间维度一样。

如果图像是灰色图像,没有通道维度,则不需要传递multichannel=True标志。这将导致最后一个轴被视为通道,您将得到不想要的输出。

  • 示例: q1 =np.zeros(397,602) x3 = transform.rescale(q1,scale=0.5,anti_aliasing=True,multichannel=True) x4 = transform.rescale(q1,scale=0.5,anti_aliasing=True) x3.scale=0.5# (198,602)x4# (198,301)

您可以参考文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64619498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档