|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码:
from tifffile import imread, imwrite
from skimage import filters, feature, color
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.001
binary = edges > threshold
# 叠加沙脊线在原始影像上
overlay = np.copy(image)
overlay[binary] = [255, 0, 0] # 将沙脊线部分标记为红色
imwrite('edge_001.tif', overlay)
结果:
要消除边缘检测结果中的噪音,可以尝试使用图像处理中的腐蚀和膨胀操作。腐蚀可以减小边缘的宽度,同时消除小的噪点,而膨胀可以恢复边缘的宽度,使其更连续。
以下是修改后的代码:
- 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.001
- 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('edge_001.tif', overlay)
复制代码
在代码中,我添加了 morphology.binary_erosion 和 morphology.binary_dilation 两个函数来进行腐蚀和膨胀操作。这里使用了一个半径为2的圆形结构元素,你可以根据实际情况调整结构元素的大小。
通过这样的处理,可以消除边缘检测结果中的噪音,得到更清晰的沙脊线结果。
|
-
|