图像数据处理25

news2024/11/25 10:30:17

六、 图像分割

6.2区域生长

6.2.1区域生长的基本概念:可以理解成先选择一个像素区域,然后将其邻接区域中相似程度高的像素合并进去,直到找不到可以合并的像素为止。其的主要优点是能够较为精准地将具有相同特征的联通区域分割出来。

6.2.2相似性判断的主要依据:设定一个阙值,计算每个候选像素的灰度值与已生长区域像素的平均灰度值之间的差的绝对值,要是这个值小于阙值,则认为相似程度高,将其合并到生长区域像素中去,反之则不进行合并。

6.3.3实际应用:

import cv2
import numpy as np


def region_growing(img, seed, threshold):
    """
    区域生长算法实现。

    参数:
        img: 输入图像,NumPy数组。
        seed: 种子点,格式为(x, y)。
        threshold: 生长阈值,决定相邻像素是否加入区域。

    返回:
        一个NumPy数组,表示区域生长的结果。
    """
    rows, cols = img.shape
    region = np.zeros((rows, cols), dtype=np.uint8)
    seeds = [seed]
    region[seed[0], seed[1]] = 255
    neighbors = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]

    while seeds:
        x, y = seeds.pop(0)
        for nx, ny in neighbors:
            nx, ny = x + nx, y + ny
            if 0 <= nx < rows and 0 <= ny < cols and region[nx, ny] == 0:
                # 确保像素值被转换为整数进行比较
                if abs(int(img[nx, ny]) - int(img[x, y])) < threshold:
                    region[nx, ny] = 255
                    seeds.append((nx, ny))

    return region


# 加载图像
img_path = 'taiyang2.jpg'  # 替换为你的图像路径
img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)  # 以灰度模式读取图像

# 检查图像是否成功加载
if img is None:
    print("错误:无法加载图像。请检查文件路径。")
else:
    # 种子点和阈值
    seed = (100, 100)  # 替换为你的种子点坐标
    threshold = 20 # 替换为你的阈值

    # 执行区域生长算法
    result = region_growing(img, seed, threshold)

    # 缩小图像
    img_small = cv2.resize(img, (0, 0), fx=0.5, fy=0.5)
    result_small = cv2.resize(result, (0, 0), fx=0.5, fy=0.5)

    # 拼接图像
    concat_img = cv2.hconcat([img_small, result_small])

    # 显示结果
    cv2.imshow('Region Growing Comparison', concat_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

注:本人为在校学生,博客是边学边写的,主要是为了巩固知识,如有错误请积极指正。

本文的内容主要基于我对张运楚教授编著的《数字图像处理》一书的学习和理解。这本书深入浅出地介绍了数字图像处理的基本理论以及经典算法等,并且提供了丰富的示例代码和实际用例,极大地帮助了我学习图像处理知识。在此,我推荐大家阅读这本书,更加深入的学习有关图像处理的知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

农产品品牌优化:软硬兼施,全网突围成焦点

农产品品牌想要在全网范围内脱颖而出&#xff0c;‌单靠传统的“硬实力”——如优质的产品质量、‌丰富的种植经验或是先进的生产技术&#xff0c;‌已经远远不够。‌在这个多元化的市场竞争中&#xff0c;‌软实力成为了决定品牌能否远航的关键。‌ 农产品讲究品牌软实力&…

【大模型】chatglm系列模型基础

前言&#xff1a;2022年11月&#xff0c;斯坦福大学大模型中心对全球30个主流大模型进行了全方位的评测2&#xff0c;GLM-130B 是亚洲唯一入选的大模型。GLM-130B 在准确性和恶意性指标上与 GPT-3 175B持平。chatglm1&#xff0c;2&#xff0c;3代在模型架构上基本一样&#xf…

day-43 有效的数独

思路 暴力解法&#xff1a;1.判断每行是否有重复的数字;2.判断每列是否有重复的数字&#xff1b;3.判断每一个以粗实线分隔的 3x3 宫内是否有重复的数字 解题过程 如果以上三种情况都不存在重复的数字&#xff0c;则返回true Code class Solution {public boolean isValidSu…

4G手机智能遥控开关

什么是4G手机智能遥控开关 4G手机智能遥控开关作为现代智能家居与工业自动化的重要组成部分&#xff0c;提供了便捷、高效的远程控制方案。它利用4G通信技术&#xff0c;允许用户随时随地通过智能手机或其他移动设备控制电器设备的开关状态&#xff0c;适用于家庭、办公、工业等…

读《Visual Whole-Body for Loco-Manipulation》①train

这个新项目比那些强化学习入门项目好配置多了。。。 不过需要搞个wandb账号&#xff0c;一开始运行时需要api key args Namespace(checkpoint-1,colsNone,compute_device_id0,debugFalse,experiment_nameNone,exptidSOME_YOUR_DESCRIPTION_debug,flat_terrainFalse,flexFalse…

认知杂谈43

今天分享 有人说的一段争议性的话 I I 年轻&#xff1a;潜力如海&#xff0c;挑战重重&#xff0c;绝非轻易挥霍的资本 I 咱都觉得年轻好像一张白纸&#xff0c;能在上面画出精彩人生呢。可实际上&#xff0c;年轻可不是啥简单的好事儿&#xff0c;它更像是个宝库&#xff0…

以太坊恐慌!支出不透明,不喜欢DeFi?创始人V神亮资辟谣!个人净资产90%为ETH!

以太坊&#xff08;Ethereum&#xff09;作为区块链领域的佼佼者&#xff0c;一直吸引着全球投资者和开发者的目光。然而&#xff0c;近期围绕以太坊基金会&#xff08;Ethereum Foundation&#xff09;及其创始人V神&#xff08;Vitalik Buterin&#xff09;的一系列争议&…

Word文档被锁定无法编辑怎么办?一键快速移除Word编辑限制

有没有遇到这种情况&#xff1f;打开Word文档后&#xff0c;准备对Word软件进行文档的编辑时&#xff0c;发现文档有部分内容无法进行编辑了&#xff0c;不知道怎么回事&#xff0c;其实这是因为无法编辑区域被锁定了&#xff0c;所以无法进行编辑&#xff0c;那么应该怎么解除…

Kotlin 泛型小知识: `<T>`, `<out T>`, `<in T>` 的区别

引言 我们是不是常常在 Kotlin 的代码中看到一些奇怪的符号&#xff0c;比如 <out T> 或者 <T>&#xff1f;如果我们对这些泛型&#xff08;Generics&#xff09;符号还不太了解&#xff0c;没关系&#xff01;今天我们就来聊一聊它们的区别&#xff0c;以及如何在…

c语言(二叉树)

第4章 二叉树和BST 树与二叉树 基本概念 树是一种非线性结构&#xff0c;其严格的数学定义是&#xff1a;如果一组数据中除了第一个节点&#xff08;第一个节点称为根节点&#xff0c;没有直接前驱节点&#xff09;之外&#xff0c;其余任意节点有且仅有一个直接前驱&#xff…

macos 10.15 catalina xcode 下载和安装

在macos 10.15 catalina系统中, 由于系统已经不再支持,所以我们无法通过应用商店来安装xcode, 需要手动下载指定版本的 xcode 版本才能安装, catalina 支持的最新xcode版本为 Xcode v12.4 (12D4e) , 其他的新版本是无法安装在Catalina系统中的. Xcode_12.4.xip下载地址 注意,下…

安装虚拟机(VMware)教程

VMware-虚拟机使用 一、VMware 介绍二、VMware 下载三、VMware 安装1.第一步&#xff0c;点击安装的*.exe文件&#xff0c;出现以下画面2.第二步&#xff0c;点击下一步&#xff0c;到选择安装的路径&#xff0c;默认安装和自定义安装3.第三步&#xff0c;点击安装&#xff0c;…

postgresql底层Driver驱动包数据库是怎么连接,怎么发送数据,怎么设置超时

##一、建立连接 ##connectionFactory.openConnectionImpl ##底层也没什么神秘的&#xff0c;就是使用的socket通讯 ##连接&#xff0c;打开流 ##socket.connect ##获取到读写流 ##二、数据库连接池创建Connection连接 ##三、发送相关sql数据 ##发数据 ##发送查询 ##sendParse(q…

nefu暑假acm集训1 构造矩阵 个人模板+例题汇总

前言&#xff1a; 以下都是nefu暑假集训的训练题&#xff0c;我在此把我的模板和写的一些练习题汇总一下并分享出来&#xff0c;希望在能满足我复习的情况下能帮助到你。 正文&#xff1a; 模板&#xff1a; #include<bits/stdc.h> using namespace std; typedef long…

手机三网状态实时查询分享

我们演示如何使用Python对接手机号在网状态API接口 以下是详细的接口文档&#xff1a;https://www.tanshuapi.com/market/detail-123 首先&#xff0c;您需要注册并获取API密钥。假设您已经拥有API密钥&#xff0c;接下来是具体的实现步骤。 编写Python代码 以下是一个Python…

如何使用Gogs搭建自己的git服务器

最近偶然发现一款轻量级的git服务器&#xff0c;以前一直用的svn server&#xff0c;最近想搞个git服务器&#xff0c; 用gitlab资源占用太多了&#xff0c;gogs是一款轻量级git服务器&#xff0c;非常适合个人使用。 项目地址&#xff1a;GitHub - gogs/gogs: Gogs is a painl…

隔离电源不能与其他电源共地吗

隔离电源通常设计用于在电气系统中提供安全隔离&#xff0c;以避免不同部分之间的电流回路和潜在的电气干扰。隔离电源的一个关键特点是其输出端与输入端之间没有直接的电气连接&#xff0c;而是通过变压器、光电耦合器或其他隔离手段实现。 关于隔离电源与其他电源共地的问题&…

神神叨叨的OpenAI和神神叨叨的草莓

其实现在的OpenAI挺烦人的&#xff0c;和之前Ilya在的时候就不太一样了&#xff0c;Schulman也走了, 尤其Schulman走了是真的可惜&#xff0c;因为他是整个后训练&#xff0c;包括微调尤其是RLHF的真正操盘手 Altman发草莓然后又没下文&#xff0c;挺败好感的&#xff0c;大家…

Ubuntu安装交叉编译工具链(gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu)

1&#xff1a; 首先把压缩包解压出来 2&#xff1a; 我是把文件名字进行了修改&#xff0c;这个看个人需求。终端输入&#xff1a; sudo vim .bashrc在文件最末尾输入&#xff1a; export PATH$PATH:/home/the/aarch64-linux-gnu/bin export LD_LIBRARY_PATH$LD_LIBRARY_PAT…

合合信息acge模型获C-MTEB第一,文本向量化迎来新突破

前言&#xff1a; 在当今时代&#xff0c;大型语言模型以其惊人的发展速度和广泛的应用前景&#xff0c;正成为全球科技界的瞩目焦点。这些模型的强大能力&#xff0c;源自于背后默默支撑它们的Embedding技术——一种将语言转化为机器可理解的数值向量的关键技术。随着大型语言…