雅虎网站收录提交入口,智能网站建设背景,专业制作网站的公司,有什么做任务的网站摘要#xff1a; 使用Numpy和Opencv完成图像的基本数据分析后续部分#xff0c;主要包含逻辑运算符操作、掩膜以及卫星图像数据分析等操作 在上一节中#xff0c;主要是介绍了图像的基本知识以及OpenCV的基本操作#xff0c;具体内容参见“使用Numpy和Opencv完成基本图像的…摘要 使用Numpy和Opencv完成图像的基本数据分析后续部分主要包含逻辑运算符操作、掩膜以及卫星图像数据分析等操作 在上一节中主要是介绍了图像的基本知识以及OpenCV的基本操作具体内容参见“使用Numpy和Opencv完成基本图像的数据分析Part I”。这部分内容是接着上一节的内容主要介绍一些其它的操作。
使用逻辑操作处理像素值 可以使用逻辑运算符创建相同大小的数组。但是逻辑运算操作并不会创建出任何新的数组只是将True返回给主机变量host variable。例如假设在RGB图像中过滤掉一些像素值低的像素或像素值高的像素以及其它任何条件将RGB转换为灰度图看起来不错但是我们目前不会对彩色图像进行这样的处理。 首先加载图像并将其显示在屏幕上
picimageio.imread(F:/demo_1.jpg)
plt.figure(figsize(10,10))
plt.imshow(pic)
plt.show() 注意图像的路径问题.之后需要考虑转储这个显示的图像。假设对于任何情况我们都想要滤除掉低于某值的所有像素值并假设该阈值设置为20。为此我们将使用逻辑运算符来执行此任务最终结果将返回所有索引的真值。
low_pixelpic20
# 检查所有值在低像素中是否正确
iflow_pixel.any()True:
print(low_pixel.shape)# 输出结果
(1079, 1293, 3) 正如之前所说主机变量一般并不使用这个名称但在本文中引用它这是因为它的行为只保留真值而不是其他任何形式的值。所以如果展示low_pixel和pic的形状我们就会发现它们其实具有相同的形状。
print(pic.shape)
print(low_pixel.shape) # 输出
(1079,1293,3)
(1079,1293,3) 我们使用全局比较运算符为所有像素值小于200的像素点生成低值滤波器。但是我们也可以使用此low_pixel数组作为索引将这些低值设置为某些特定值这些值可能高于或低于先前的像素值。
# 随机选择一个值
import random
# 加载原始图像
picimageio.imread(F:/demo_1.jpg)
# 随机设置一个值取值范围25~225 choosenpic[low_pixel]random.randint(25,225)
# 展示图像
plt.figure(figsize(10,10))
plt.imshow(pic)plt.show() 掩膜 图像掩膜是一种图像处理技术被广泛用于去除具有模糊边缘、透明或毛刺部分的照片背景看起来类似于PS中的一项技术。 下面将带领读者一起创建一个圆盘形状的掩膜。首先我们测量从图像中心到每个边界像素值的距离在这里采用应用比较方便的半径然后使用逻辑运算符创建一个圆盘。这个过程很简单如下面的代码所示
if__name____main__:
# 加载图像
picimageio.imread(F:/demo_1.jpg)
# 分离行和列
total_row,total_col,layerspic.shape 创建矢量Ogrid 是一个不错的方法method of creating a
比如
ogrid[0:5,0:5]
输出:
[array([[0],[1],[2],[3],[4]]),
array([[0, 1, 2, 3, 4]])] x,ynp.ogrid[:total_row,:total_col]
# 获取图像的中心值
cen_x,cen_ytotal_row/2,total_col/2 测量从中心到每个边界像素的距离-- s**2 (Y-y)**2 (X-x)**2
distance_from_the_centernp.sqrt((x-cen_x)**2(y-cen_y)**2)
# 选择半径值
radius(total_row/2)
# 使用逻辑操作符
circular_picdistance_from_the_centerradius 给所有半径外的像素值分配零值即黑色pic[circular_pic]0
plt.figure(figsize(10,10))plt.imshow(pic)
plt.show() 卫星图像处理 作为edX的公开课之一下面将介绍一些卫星图像及其处理方法这部分内容是十分有用的下面对其进行一些处理做一些分析任务。
# 加载图像
picimageio.imread(F:\satimg.jpg)
plt.figure(figsize(10,10))
plt.imshow(pic)
plt.show() 下面看看它的一些基本信息
print(fShape of the image {pic.shape})print(fhieght {pic.shape[0]} pixels)print(fwidth {pic.shape[1]} pixels) # 输出
Shapeoftheimage(3725,4797,3)height 3725 pixelswidth 4797 pixels 从中可以发现一些有趣的东西像许多其他可视化结果一样每个rgb层中的颜色都表示对应的内容。例如红色强弱表示像素中地理数据点的高度蓝色强弱表示方位的度量而绿色表示斜率这些颜色将有助于我们以更快、更有效的方式传达信息而不仅是显示数字。
红色像素表示高度蓝色像素表示方位绿色像素表示斜率 只需看一下这张彩色图像训练有素的眼睛就能分辨出海拔是多少斜率是多少方位在哪里所以为这些颜色加载更多含义能够表示更科学的东西一个好的想法
检测每个通道的高像素
# 只有红色通道值,像素值高于180picimageio.imread(F:\satimg.jpg)red_maskpic[:,:,0]180 pic[red_mask]0plt.figure(figsize(15,15))plt.imshow(pic) # 只有绿色通道像素值像素值高于180picimageio.imread(F:\satimg.jpg)green_maskpic[:,:,1]180 pic[green_mask]0plt.figure(figsize(15,15))plt.imshow(pic) # 只有蓝色通道像素值像素值高于180picimageio.imread(F:\satimg.jpg)blue_maskpic[:,:,2]180 pic[blue_mask]0plt.figure(figsize(15,15))plt.imshow(pic) # 使用逻辑与的组合掩膜picimageio.imread(F:\satimg.jpg)final_masknp.logical_and(red_mask,green_mask,blue_mask)pic[final_mask]40plt.figure(figsize(15,15))plt.imshow(pic) 数十款阿里云产品限时折扣中赶紧点击领劵开始云上实践吧
作者信息
Mohammed Innat机器学习和数据科学研究者 本文由阿里云云栖社区组织翻译。 文章原标题《Basic Image Data Analysis Using Numpy and OpenCV – Part 2》译者海棠审校Uncle_LLD。 文章为简译更为详细的内容请查看原文。
原文链接