提交 ba132f40 编写于 作者: W wizardforcel

fix

上级 c34771f5
......@@ -32,13 +32,13 @@ In [4]: import numpy as np
加载图像数据由 Pillow 库提供支持。 本来,`matplotlib`只支持 PNG 图像。 如果本机读取失败,下面显示的命令会回退到 Pillow。
此示例中使用的图像是 PNG 文件,但是请记住自己的数据的 Pillow 要求。
此示例中使用的图像是 PNG 文件,但是请记住自己的数据的 Pillow 要求。
下面是我们要摆弄的图片:
![](http://matplotlib.org/_images/stinkbug.png)
它是一个 24 位 RGB PNG 图像(每个 R,G,B 为 8 位)。 根据您获取数据的位置,您最有可能遇到的其他类型的图像是 RGBA 图像,拥有透明度或单通道灰度(亮度)的图像。 您可以右键单击它,选择`Save image as`(另存为)为本教程的剩余部分下载到你的计算机。
它是一个 24 位 RGB PNG 图像(每个 R,G,B 为 8 位)。 根据你获取数据的位置,你最有可能遇到的其他类型的图像是 RGBA 图像,拥有透明度或单通道灰度(亮度)的图像。 你可以右键单击它,选择`Save image as`(另存为)为本教程的剩余部分下载到你的计算机。
现在我们开始...
......@@ -65,7 +65,7 @@ array([[[ 0.40784314, 0.40784314, 0.40784314],
注意这里的`dtype` - `float32`。 Matplotlib 已将每个通道的8位数据重新定标为 0.0 和 1.0 之间的浮点数。 作为旁注,Pillow 可以使用的唯一数据类型是`uint8`。 Matplotlib 绘图可以处理`float32``uint8`,但是对于除 PNG 之外的任何格式的图像,读取/写入仅限于`uint8`数据。 为什么是 8 位呢? 大多数显示器只能渲染每通道 8 位的颜色渐变。 为什么他们只能渲染每通道 8 位呢? 因为这会使所有人的眼睛可以看到。 更多信息请见(从摄影的角度):[Luminous Landscape 位深度教程](http://www.luminous-landscape.com/tutorials/bit-depth.shtml)
每个内部列表表示一个像素。 这里,对于 RGB 图像,有 3 个值。 由于它是一个黑白图像,R,G 和 B 都是类似的。 RGBA(其中 A 是阿尔法或透明度)对于每个内部列表具有 4 个值,而且简单亮度图像仅具有一个值(因此仅是二维数组,而不是三维数组)。 对于 RGB 和 RGBA 图像,`matplotlib`支持`float32``uint8`数据类型。 对于灰度,`matplotlib`只支持`float32`。 如果的数组数据不符合这些描述之一,则需要重新缩放它。
每个内部列表表示一个像素。 这里,对于 RGB 图像,有 3 个值。 由于它是一个黑白图像,R,G 和 B 都是类似的。 RGBA(其中 A 是阿尔法或透明度)对于每个内部列表具有 4 个值,而且简单亮度图像仅具有一个值(因此仅是二维数组,而不是三维数组)。 对于 RGB 和 RGBA 图像,`matplotlib`支持`float32``uint8`数据类型。 对于灰度,`matplotlib`只支持`float32`。 如果的数组数据不符合这些描述之一,则需要重新缩放它。
## 将 NumPy 数组绘制为图像
......@@ -81,7 +81,7 @@ In [6]: imgplot = plt.imshow(img)
### 对图像绘图应用伪彩色方案
伪彩色可以是一个有用的工具,用于增强对比度和更易于可视化您的数据。 这在使用投影仪对您的数据进行演示时尤其有用 - 它们的对比度通常很差。
伪彩色可以是一个有用的工具,用于增强对比度和更易于可视化你的数据。 这在使用投影仪对你的数据进行演示时尤其有用 - 它们的对比度通常很差。
伪彩色仅与单通道,灰度,亮度图像相关。 我们目前有一个RGB图像。 由于R,G 和 B 都是相似的(见上面或你的数据),我们可以只选择一个通道的数据:
......@@ -106,7 +106,7 @@ In [9]: plt.imshow(lum_img, cmap="hot")
![](http://matplotlib.org/_images/image_tutorial-3.png)
请注意,还可以使用`set_cmap()`方法更改现有绘图对象上的颜色:
请注意,还可以使用`set_cmap()`方法更改现有绘图对象上的颜色:
```py
In [10]: imgplot = plt.imshow(lum_img)
......@@ -117,7 +117,7 @@ In [11]: imgplot.set_cmap('spectral')
> 注
> 但是,请记住,在带有内联后端的 IPython notebook 中,您不能对已经渲染的绘图进行更改。 如果你在一个单元格中创建了`imgplot`,你不能在以后的单元格中调用`set_cmap()`,并且改变前面的绘图。 请确保您在相同单元格中一起输入这些命令。`plt`命令不会更改先前单元格的绘图。
> 但是,请记住,在带有内联后端的 IPython notebook 中,你不能对已经渲染的绘图进行更改。 如果你在一个单元格中创建了`imgplot`,你不能在以后的单元格中调用`set_cmap()`,并且改变前面的绘图。 请确保你在相同单元格中一起输入这些命令。`plt`命令不会更改先前单元格的绘图。
有许多可选的其它颜色表,请见[颜色表的列表和图像](http://matplotlib.org/examples/color/colormaps_reference.html)
......@@ -132,11 +132,11 @@ In [13]: plt.colorbar()
![](http://matplotlib.org/_images/image_tutorial-5.png)
这会为您现有的图形添加一个颜色条。 如果您更改并切换到不同的颜色映射,则不会自动更改 - 您必须重新创建绘图,并再次添加颜色条。
这会为你现有的图形添加一个颜色条。 如果你更改并切换到不同的颜色映射,则不会自动更改 - 你必须重新创建绘图,并再次添加颜色条。
### 检查特定数据范围
有时,想要增强图像的对比度,或者扩大特定区域的对比度,同时牺牲变化不大,或者无所谓的颜色细节。 找到有趣区域的最好工具是直方图。 要创建我们的图像数据的直方图,我们使用`hist()`函数。
有时,想要增强图像的对比度,或者扩大特定区域的对比度,同时牺牲变化不大,或者无所谓的颜色细节。 找到有趣区域的最好工具是直方图。 要创建我们的图像数据的直方图,我们使用`hist()`函数。
```py
In [14]: plt.hist(lum_img.ravel(), bins=256, range=(0.0, 1.0), fc='k', ec='k')
......@@ -144,7 +144,7 @@ In [14]: plt.hist(lum_img.ravel(), bins=256, range=(0.0, 1.0), fc='k', ec='k')
![](http://matplotlib.org/_images/image_tutorial-6.png)
通常,图像的『有趣』部分在峰值附近,可以通过剪切峰值上方和/或下方的区域获得额外的对比度。 在我们的直方图中,看起来最大值处没有太多有用的信息(图像中有很多不是白色的东西)。 让我们调整上限,以便我们有效地『放大』直方图的一部分。 我们通过将`clim`参数传递给`imshow`来实现。 你也可以通过对图像绘图对象调用`set_clim()`方法来做到这一点,但要确保你在使用 IPython Notebook 的时候,和`plot`命令在相同的单元格中执行 - 它不会改变之前单元格的图。
通常,图像的『有趣』部分在峰值附近,可以通过剪切峰值上方和/或下方的区域获得额外的对比度。 在我们的直方图中,看起来最大值处没有太多有用的信息(图像中有很多不是白色的东西)。 让我们调整上限,以便我们有效地『放大』直方图的一部分。 我们通过将`clim`参数传递给`imshow`来实现。 你也可以通过对图像绘图对象调用`set_clim()`方法来做到这一点,但要确保你在使用 IPython Notebook 的时候,和`plot`命令在相同的单元格中执行 - 它不会改变之前单元格的图。
```py
In [15]: imgplot = plt.imshow(lum_img, clim=(0.0, 0.7))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册