You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Julia中连通图像中数值为5的破碎区域

连通矩阵中数值为5的破碎区域的优化方法探讨

我有一个带数值的矩阵,已上色用于视觉分析:

  • 绿色区域代表数值5
  • 棕色区域代表数值6
  • 黑色区域代表数值0

我希望连通其中数值为5的破碎区域,目前尝试的方法是使用特定结构元素进行两次膨胀操作,再用中值滤波处理,Julia代码如下:

se_mask = centered(Bool[1 1 0; 1 1 0; 0 0 0])
result = dilate(dilate(gt_mat, se_mask), se_mask)
d_gt_mat = mapwindow(median, result, (5, 5))

但不确定是否存在更优的填充连通方法。

示例图像:

  • 区域1:区域1
  • 区域2:区域2

几种更精准的优化方案

1. 定向/通用闭运算

闭运算(膨胀后腐蚀)是填充小缺口的标准形态学操作,相比多次膨胀+中值滤波,能更精准保留5区域的原有形状,同时填充内部小空洞和相邻缺口:

using ImageMorphology

# 先提取数值为5的掩码,避免影响其他区域
mask_5 = gt_mat .== 5

# 用你原来的定向结构元素做闭运算,适合填充左上方向的缺口
se_custom = centered(Bool[1 1 0; 1 1 0; 0 0 0])
closed_mask = dilate(erode(mask_5, se_custom), se_custom)

# 或者用全连通结构元素,填充所有方向的小缺口
se_full = centered(Bool[1 1 1; 1 1 1; 1 1 1])
closed_mask = dilate(erode(mask_5, se_full), se_full)

# 将处理后的掩码还原到原矩阵
optimized_mat = copy(gt_mat)
optimized_mat[closed_mask] = 5

2. 区域生长与连通分量合并

如果缺口较大或不规则,可以先识别所有5的连通区域,再根据区域间的距离合并邻近区域:

using ImageSegmentation, Distances

mask_5 = gt_mat .== 5
# 初始分割所有连通的5区域
segments = fast_scanning(mask_5, 1) # 1表示4/8连通,根据需求调整

# 计算区域间的最小距离,合并距离小于阈值的区域
merge_threshold = 3 # 可根据缺口宽度调整
num_segs = length(segments)
dist_matrix = pairwise(Euclidean(), [centroid(seg) for seg in segments], dims=1)

# 合并邻近区域
merged_mask = falses(size(mask_5))
for i in 1:num_segs
    if !merged_mask[segments[i].indices]
        # 找到所有距离小于阈值的区域
        neighbors = findall(dist_matrix[i,:] .<= merge_threshold)
        for j in neighbors
            merged_mask[segments[j].indices] .= true
        end
    end
end

optimized_mat = copy(gt_mat)
optimized_mat[merged_mask] = 5

3. 距离变换填充

基于距离变换找到离5区域最近的0区域(排除6的区域),精准填充缺口:

using ImageMorphology

mask_5 = gt_mat .== 5
# 计算每个像素到最近5区域的距离
dist = distance_transform(feature_transform(mask_5))

# 设置填充阈值:距离小于该值的0区域被填充为5
fill_threshold = 2
fill_mask = (dist .<= fill_threshold) .& (gt_mat .== 0)

optimized_mat = copy(gt_mat)
optimized_mat[fill_mask] = 5

内容的提问来源于stack exchange,提问作者F612

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:15:31