蒙版: 针对灰度图阈值分割,低于阈值变为0,大于阈值不变

cannyMask[cannyMask < 255] = 0

二维数组(or图片)如果其中的像素小于255就变为0,否则保持原值。

 

https://blog.youkuaiyun.com/qq_40962368/article/details/80917250

图像的阈值处理

      一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。这是研究灰度变换的最特殊的方法,称为图像的二值化(Binarization)。

       阈值分割法的特点是:适用于目标与背景灰度有较强对比的情况,重要的是背景或物体的灰度比较单一,而且总可以得到封闭且连通区域的边界。

(一)简单阈值

选取一个全局阈值,然后就把整幅图像分成非黑即白的二值图像。

函数为cv2.threshold( )

这个函数有四个参数,第一个是原图像矩阵,第二个是进行分类的阈值,第三个是高于(低于)阈值时赋予的新值,第四个是一个方法选择参数,常用的有:

cv2.THRESH_BINARY(黑白二值)
cv2.THRESH_BINARY_INV(黑白二值翻转)
cv2.THRESH_TRUNC(得到额图像为多像素值)
cv2.THRESH_TOZERO(当像素高于阈值时像素设置为自己提供的像素值,低于阈值时不作处理)
cv2.THRESH_TOZERO_INV(当像素低于阈值时设置为自己提供的像素值,高于阈值时不作处理)
这个函数返回两个值,第一个值为阈值,第二个就是阈值处理后的图像矩阵。
 

img = cv2.imread('4.jpg', 0)
ret, thresh1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)  # binary (黑白二值)
ret, thresh2 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)  # (黑白二值反转)
ret, thresh3 = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)  # 得到的图像为多像素值
ret, thresh4 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)  # 高于阈值时像素设置为255,低于阈值时不作处理
ret, thresh5 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)  # 低于阈值时设置为255,高于阈值时不作处理
 
print(ret)
 
cv2.imshow('thresh1', thresh1)
cv2.imshow('thresh2', thresh2)
cv2.imshow('thresh3', thresh3)
cv2.imshow('thresh4', thresh4)
cv2.imshow('thresh5', thresh5)
cv2.imshow('grey-map', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

### ENVI 阈值分割与提取轮廓方法 在遥感图像处理中,ENVI 是一款功能强大的工具,能够实现阈值分割以及目标区域的轮廓提取。以下是具体的操作流程及相关说明。 #### 1. 阈值分割原理 阈值分割是一种基于像素灰度值差异来区分目标和背景的技术。通过设定合适的阈值范围,可以将感兴趣的目标从整个图像中分离出来。对于不同的应用需求(如水体提取、植被分析),需要根据实际情况调整阈值参数[^2]。 #### 2. 使用 Band Threshold 工具进行阈值分割 在 ENVI 中,“Band Threshold”是一个常用的交互式工具,用于定义特定波段内的数值区间从而筛选出满足条件的部分数据。 - 打开软件后加载待处理影像文件; - 转至菜单栏选择 `Basic Tools -> Regions of Interest (ROI)` 下拉选项里的 “Band Threshold…” 功能项; - 设置好对应的波段编号及其上下限临界值(例如针对 TM 影像做水体检测时可设为 NDWI 大于等于0.01小于等于1之间);点击运行按钮即可得到初步结果图层显示哪些地方符合所定标准被标记出来了[^2]。 #### 3. 提取目标物体边界线/轮廓信息 完成上述操作之后还需要进一步获取这些选定区域内边界的矢量表达形式以便后续深入研究或者与其他地理要素叠加对比展示效果更佳直观明了。 - 对刚刚生成的新类别执行向量化转换过程:依次进入命令路径`File->Save As Vector File...`,按照提示保存格式一般推荐选用 shapefile(.shp); - 此外也可以借助第三方插件比如 Feature Extraction Module(FEM),它提供了更加智能化自动化的解决方案适用于复杂场景下的精确描绘工作[^3]. ```python import ee ee.Initialize() # 定义函数计算NDWI指数 def calculate_ndwi(image): ndwi = image.normalizedDifference(['B3', 'B5']).rename('NDWI') return image.addBands(ndwi) # 加载Landsat8影像集合并映射NDWI计算 collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA') \ .filterDate('2020-01-01','2020-12-31') \ .map(calculate_ndwi) # 应用阈值得到二值化掩模 thresholded = collection.first().select('NDWI').gt(0).selfMask() ``` 以上代码片段展示了如何利用Google Earth Engine平台在线批量处理大量卫星图片资源的同时快速定位水面位置,并将其转化为布尔型便于统计面积大小等功能扩展开发[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机视觉-Archer

图像分割没有团队的同学可加群

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值