【区域生长】代码

以下是基于Python的区域生长法完整代码:

python 复制代码
import numpy as np
import cv2

# 读入原始光学影像并转为灰度图像
img = cv2.imread('optical_image.jpg', cv2.IMREAD_GRAYSCALE)

# 设定种子点(滑坡区域)
seed_point = (200, 200)

# 设定生长阈值
threshold = 50

# 定义函数实现区域生长法
def region_grow(img, seed_point, threshold):
    # 定义8邻域(包括中心点),用于判断种子点周围的像素是否属于滑坡区域
    neigbors = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]

    # 构造滑坡区域的掩膜(初始状态全部为0)
    mask = np.zeros(img.shape, dtype=np.uint8)

    # 将种子点置为255(滑坡区域)
    mask[seed_point] = 255

    # 开始生长
    while True:
        # 复制掩膜
        new_mask = mask.copy()

        # 遍历掩膜中所有的像素
        for i in range(img.shape[0]):
            for j in range(img.shape[1]):
                # 如果该像素已标记为滑坡区域,则检查它周围的8个像素
                if mask[i, j] == 255:
                    for neigbor in neigbors:
                        # 计算8邻域中每个像素的坐标
                        x = i + neigbor[0]
                        y = j + neigbor[1]

                        # 如果该像素在图像范围内且未被标记,并且其与种子点之间的差值小于阈值,则标记为滑坡区域
                        if x >= 0 and y >= 0 and x < img.shape[0] and y < img.shape[1]:
                            if mask[x, y] == 0 and abs(int(img[x, y]) - int(img[i, j])) < threshold:
                                new_mask[x, y] = 255

        # 如果掩膜未发生变化,则生长结束
        if np.array_equal(mask, new_mask):
            break

        # 更新掩膜
        mask = new_mask

    # 返回滑坡区域掩膜
    return mask

# 调用区域生长函数获取滑坡区域掩膜
mask = region_grow(img, seed_point, threshold)

# 显示滑坡区域掩膜和原始光学影像(滑坡区域为红色)
img_with_mask = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
img_with_mask[np.where(mask == 255)] = [0, 0, 255]
cv2.imshow('Slip Area', img_with_mask)
cv2.imshow('Original Image', img)
cv2.waitKey(0)

该代码实现了基于区域生长法的光学影像目标识别,具体步骤如下:

  1. 读入原始光学影像,并将其转为灰度图像。
  2. 设定输入种子点的坐标和生长阈值。
  3. 定义名为region_grow的函数实现区域生长法,传入参数为原始光学影像、种子点和生长阈值。在函数中运用掩膜的概念,逐渐将滑坡区域扩大,直到满足停止生长的条件。最终返回滑坡区域掩膜。
  4. 在主函数中调用region_grow函数获取滑坡区域掩膜。
  5. 将滑坡区域掩膜与原始光学影像合并并显示出来,方便观察。

注意,该代码仅提供了一个基本的区域生长法实现,实际应用时可能需要根据具体情况对生长算法进行优化。

相关推荐
中微极客几秒前
RAG评估工具2026横向测评:从手工到自动化
人工智能·自动化
三品吉他手会点灯1 分钟前
嵌入式机器学习 - 学习笔记1.2.3 - 机器学习软件框架
人工智能·笔记·嵌入式硬件·学习·机器学习
LaughingZhu5 分钟前
Product Hunt 每日热榜 | 2026-07-15
前端·人工智能·神经网络·react.js·搜索引擎·前端框架
爱吃提升8 分钟前
Python自动驾驶图像识别完整实战教程(OpenCV+YOLOv8,附可直接运行源码)
python·opencv·自动驾驶
TMT星球8 分钟前
浦东新区与阅文集团携手,人工智能文创产业基地揭牌启用
人工智能·百度
repokey-Yao11 分钟前
AI 如何看懂 FPGA 大工程?RepoKey Starter 使用记录
人工智能·chatgpt·fpga
意图共鸣12 分钟前
《智能体三角模型白皮书》发布:意图共鸣科技如何定义私有知识域?
人工智能
潜龙952716 分钟前
AI Agent评测体系实施规划
人工智能·ai agent评测实施
2601_9567436821 分钟前
上海AI Agent智能体开发选型:从工程架构看落地路径解析
大数据·人工智能·ai·架构·开发经验·上海
subin9926 分钟前
圣阳蓄电池企业口碑优势与核心运营策略FAQ解析
大数据·运维·人工智能·电源·ups