三角函数整体乘以一个常数图像如何变化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三角函数整体乘以一个常数图像如何变化相关的知识,希望对你有一定的参考价值。

参考技术A 振幅变换
图像上每一个点的横坐标不变,纵坐标变为原来的常数倍。
参考技术B 与常数的正负有关。若正。则伸长常数倍,若负,先伸长|常数|倍,再把图像关于x轴对称

将 RGB 图像数组乘以标量后使用 plt.imshow 获取黑色图

【中文标题】将 RGB 图像数组乘以标量后使用 plt.imshow 获取黑色图【英文标题】:Getting black plots with plt.imshow after multiplying RGB image array by a scalar 【发布时间】:2017-06-22 00:08:49 【问题描述】:

所以我有点困惑为什么会这样。

我有一个二进制图像:

现在我想将此二值图像转换为 RGB 空间,因此我使用 dstack 函数连接第 3 轴

到目前为止一切正常,但现在我必须将 out_image 数组乘以 255 以在 RGB 空间中反射白色,这就是问题发生的地方,一切都变黑了

但是,如果我绘制另一个随机图像,一切都很好,所以这里发生了什么,我也玩过cmap,但无论使用哪种cmap,当我使用它时,它总是变成黑色乘以255

有什么想法吗?

【问题讨论】:

当我对 RGB 图像使用 plt.imshow(...) 时,我在每个 RGB 通道中使用了介于 0 和 1 之间的浮点值。事实上,当我不这样做时,它给了我错误。它似乎在您的第二张图像中以这种方式绘制它,黑白从 0 到 1。如果您调整其他通道之一,我想您会看到其他颜色。因此,他们的问题归结为您是否需要将其映射到 8 位整数。 【参考方案1】:

问题中问题的解决方案是不要将数组与255相乘。 另一种选择是将图像的数据类型减少为unsigned int8,out_image = out_image.astype(np.uint8)

让我解释一下原因:

单通道图像可以具有任意值和数据类型。颜色将由要使用的颜色图确定,并在需要时标准化到某个范围。

相比之下,imshow 假设 3 通道 RGB 阵列位于两个范围内,[0., 1.][0,255]。 (“3维数组必须是dtype unsigned byte、unsigned short、float32或float64”)。 要使用的范围将由数组的数据类型选择:

    float 数组应在 [0., 1.] 范围内, integer 数组应在 [0,255] 范围内。另请注意,整数数组的数据类型必须是 int8 而不是 int32。

从 RGB 案例中可以看出,[0,1] 范围内的整数数组保持黑色,[0., 255.] 范围内的浮点数组也保持黑色。

【讨论】:

您的意思是as.type(numpy.uint8)?因为将其转换为 int8 对我不起作用

以上是关于三角函数整体乘以一个常数图像如何变化的主要内容,如果未能解决你的问题,请参考以下文章

一个函数乘以一个常数对原函数图像有没有影响?初中我只学过上加下减,左加右减。

函数图像缩短是啥意思

opencv学习笔记之cvSobel 函数解析

如何将特定的行和列值乘以常数来创建新列?

一个方阵乘以一个常数等于?

matlab亮度增加100