|
发表于 2023-8-7 15:37:49
|
显示全部楼层
根据原代码,你可以通过以下方式更好地去除噪音同时不影响提取结果:
1. 使用更合适的阈值来确定沙脊线的二值化图像。根据实际情况,可以尝试不同的阈值值,找到最佳的阈值。可以通过试验和观察结果来选择合适的阈值。
2. 使用更适当的边缘检测算法。在原代码中,使用了Sobel算子进行边缘检测。你可以尝试使用其他的边缘检测算法,如Roberts算子,以找到更好的结果。可以通过将注释取消并运行代码来比较不同算法的效果。
3. 调整腐蚀和膨胀操作的参数。在原代码中,使用了半径为1的圆形结构元素进行腐蚀和膨胀操作。你可以尝试使用不同大小和形状的结构元素来调整腐蚀和膨胀的效果。可以通过更改 morphology.disk(1) 中的参数来尝试不同的结构元素。
以下是修改后的代码:
- 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.roberts(gray_image) # 使用Roberts算子进行边缘检测
- # 设置合适的阈值来确定沙脊线的二值化图像
- threshold = 0.01 # 调整阈值值
- binary = edges > threshold
- # 使用腐蚀和膨胀操作消除噪音
- binary = morphology.binary_erosion(binary, morphology.disk(2)) # 调整腐蚀操作的结构元素参数
- binary = morphology.binary_dilation(binary, morphology.disk(2)) # 调整膨胀操作的结构元素参数
- # 叠加沙脊线在原始影像上
- overlay = np.copy(image)
- overlay[binary] = [255, 0, 0] # 将沙脊线部分标记为红色
- # 导出结果
- imwrite('ed1roberts_01.tif', overlay)
复制代码
你可以根据实际情况进一步调整阈值和腐蚀膨胀操作的参数,以获得更好的去噪效果。 |
|