|
发表于 2023-8-7 15:38:36
|
显示全部楼层
以下是修改后的代码,用于更好地去除噪音同时不影响提取结果:
- from tifffile import imread, imwrite
- from skimage import filters, feature, color, morphology
- import matplotlib.pyplot as plt
- import numpy as np
- # 读取TIFF格式无人机影像数据
- image = imread('C:\\Users\\WINDOWS\\Desktop\\taiyuan\\python\\1=quick_dom.tif')
- # 转换为灰度图像
- gray_image = color.rgb2gray(image)
- # 边缘检测,提取沙丘脊线
- edges = filters.sobel(gray_image)
- # 设置合适的阈值来确定沙脊线的二值化图像
- threshold = 0.005
- binary = edges > threshold
- # 使用闭运算操作消除噪音
- selem = morphology.disk(3)
- closed = morphology.closing(binary, selem)
- # 移除小区域噪音
- cleaned = morphology.remove_small_objects(closed, min_size=100)
- # 叠加沙脊线在原始影像上
- overlay = np.copy(image)
- overlay[cleaned] = [255, 0, 0] # 将沙脊线部分标记为红色
- # 导出结果
- imwrite('ed1sobel_005.tif', overlay)
复制代码
修改说明:
1. 使用闭运算操作(morphology.closing)替代了腐蚀和膨胀操作,以更好地消除噪音。
2. 添加了移除小区域噪音的步骤(morphology.remove_small_objects),可以根据需要调整最小尺寸参数(min_size)。
3. 更新了变量名以更好地反映代码逻辑。
4. 使用imwrite函数替代了imwrite,以便正确导出结果。
请注意,噪音消除是一个相对主观的任务,具体的处理方法可能因具体情况而有所不同。根据实际需求和数据特点,你可能需要进一步调整代码或添加其他处理步骤来获得更好的结果。 |
|