摘要: 使用Numpy和Opencv完成图像的基本数据分析后续部分,主要包含逻辑运算符操作、掩膜以及卫星图像数据分析等操作
在上一节中,主要是介绍了图像的基本知识以及OpenCV的基本操作,具体内容参见“使用Numpy和Opencv完成基本图像的数据分析(Part I)”。这部分内容是接着上一节的内容,主要介绍一些其它的操作。
使用逻辑操作处理像素值可以使用逻辑运算符创建相同大小的数组。但是,逻辑运算操作并不会创建出任何新的数组,只是将True返回给主机变量(host variable)。例如:假设在RGB图像中过滤掉一些像素值低的像素或像素值高的像素(以及其它任何条件),将RGB转换为灰度图看起来不错,但是我们目前不会对彩色图像进行这样的处理。 首先加载图像,并将其显示在屏幕上:
pic=imageio.imread('F:/demo_1.jpg')
plt.figure(figsize=(10,10))
plt.imshow(pic)
plt.show()
注意图像的路径问题.之后需要考虑转储这个显示的图像。假设对于任何情况,我们都想要滤除掉低于某值的所有像素值,并假设该阈值设置为20。为此,我们将使用逻辑运算符来执行此任务,最终结果将返回所有索引的真值。
low_pixel=pic>>ogrid[0:5,0:5]
输出:
[array([[0],[1],[2],[3],[4]]),
array([[0, 1, 2, 3, 4]])]
'''
x,y=np.ogrid[:total_row,:total_col]
# 获取图像的中心值
cen_x,cen_y=total_row/2,total_col/2
'''
测量从中心到每个边界像素的距离--> s**2 = (Y-y)**2 + (X-x)**2
'''
distance_from_the_center=np.sqrt((x-cen_x)**2+(y-cen_y)**2)
# 选择半径值
radius=(total_row/2)
# 使用逻辑操作符 '>'
circular_pic=distance_from_the_center>radius
'''
给所有半径外的像素值分配零值,即黑色
'''
pic[circular_pic]=0
plt.figure(figsize=(10,10))
plt.imshow(pic)
plt.show()
作为edX的公开课之一,下面将介绍一些卫星图像及其处理方法,这部分内容是十分有用的,下面对其进行一些处理,做一些分析任务。
# 加载图像
pic=imageio.imread('F:\satimg.jpg')
plt.figure(figsize=(10,10))
plt.imshow(pic)
plt.show()
下面看看它的一些基本信息:
print(f'Shape of the image {pic.shape}')
print(f'hieght {pic.shape[0]} pixels')
print(f'width {pic.shape[1]} pixels')
# 输出
Shapeoftheimage(3725,4797,3)
height 3725 pixels
width 4797 pixels
从中可以发现一些有趣的东西,像许多其他可视化结果一样,每个rgb层中的颜色都表示对应的内容。例如,红色强弱表示像素中地理数据点的高度,蓝色强弱表示方位的度量,而绿色表示斜率,这些颜色将有助于我们以更快、更有效的方式传达信息,而不仅是显示数字。
- 红色像素表示:高度
- 蓝色像素表示:方位
- 绿色像素表示:斜率 只需看一下这张彩色图像,训练有素的眼睛就能分辨出海拔是多少,斜率是多少,方位在哪里,所以为这些颜色加载更多含义能够表示更科学的东西,一个好的想法!
# 只有红色通道值,像素值高于180
pic=imageio.imread('F:\satimg.jpg')
red_mask=pic[:,:,0]
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?