数字图像处理:图像分割应用

数字图像处理:图像分割应用

图像分割是图像处理中的一个关键步骤,其目的是将图像分成具有不同特征的区域,以便进一步的分析和处理。

1.1 阈值分割法

阈值分割法(Thresholding)是一种基于图像灰度级或颜色的分割方法,它通过设置一个或多个阈值,将图像划分为前景和背景。它的基本思想是根据像素的灰度值来判断该像素是否属于某个目标区域。

基本原理:
将像素的灰度值与设定的阈值进行比较。
如果像素值高于阈值,则归为目标区域;如果低于阈值,则归为背景。
在多阈值分割中,多个阈值将图像分成多个区域。

1.2 区域生长法

区域生长法(Region Growing)是一种基于像素相似性的分割方法,它从某些初始的“种子点”开始,逐步将与种子点相似的邻域像素归入同一分割区域,直到没有更多满足条件的像素可以合并。

基本原理:
从选定的“种子点”开始,根据预定义的相似性准则(如灰度值相似度或纹理相似度),将相邻的像素添加到种子区域中。
相邻像素的相似性准则一般基于像素的灰度差异、颜色差异或纹理等特征。
当不再有符合相似性条件的像素时,生长过程停止,得到一个完整的区域。

1.3 边缘检测法

边缘检测法(Edge Detection)是一种基于图像梯度信息的分割方法,它通过检测图像中灰度值或颜色发生显著变化的位置来确定区域的边界,适用于具有明显边界的目标区域分割。

基本原理:
利用图像梯度(即像素灰度值或颜色的变化率)来识别边缘。
边缘通常是图像中像素灰度值或颜色发生急剧变化的地方,通常代表物体的边界。
常用的边缘检测算法包括Sobel算子、Canny算子、Prewitt算子等。

1.4 代码实现

(1)选取实验用的图像,完成图像读取和显示;
(2)使用阈值分割法、区域生长法、边缘检测法对图像进行分割,并显示结果;
(3)使用深度学习模型进行图像分割,并比较结果。

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
import random# 读取图像并转换为RGB格式
img_dir = r'D:\Document\Experiment\data\image.png'
rgb = cv.imread(img_dir)
rgb = cv.cvtColor(rgb, cv.COLOR_BGR2RGB)  # 转换为RGB格式# 转换为灰度图
gray = cv.cvtColor(rgb, cv.COLOR_RGB2GRAY)# (1)阈值分割法
def threshold_segmentation(image, threshold_value=128):"""使用简单的阈值分割法"""_, thresholded_image = cv.threshold(image, threshold_value, 255, cv.THRESH_BINARY)return thresholded_image# (2)区域生长法
def region_growing(image, seed_point, threshold=5):"""使用简单的区域生长算法"""h, w = image.shapesegmented_image = np.zeros_like(image)visited = np.zeros_like(image, dtype=bool)seed_value = image[seed_point[1], seed_point[0]]# 初始化种子列表seeds = [seed_point]segmented_image[seed_point[1], seed_point[0]] = 255visited[seed_point[1], seed_point[0]] = True# 区域生长while seeds:x, y = seeds.pop(0)for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]:  # 邻域4连通nx, ny = x + dx, y + dyif 0 <= nx < w and 0 <= ny < h and not visited[ny, nx]:if abs(int(image[ny, nx]) - int(seed_value)) < threshold:segmented_image[ny, nx] = 255seeds.append((nx, ny))visited[ny, nx] = Truereturn segmented_image# (3)边缘检测法
def edge_detection(image):"""使用Canny边缘检测法"""edges = cv.Canny(image, 100, 200)  # 调整阈值可以影响边缘检测效果return edges# 应用阈值分割法
threshold_image = threshold_segmentation(gray, threshold_value=128)# 应用区域生长法
seed_point = (1055, 788)  # 随机选择一个种子点
region_growing_image = region_growing(gray, seed_point, threshold=30)# 应用边缘检测法
edges_image = edge_detection(gray)# 展示分割结果
plt.figure(figsize=(15, 5))# 展示原始图像
plt.subplot(1, 4, 1)
plt.title("Original")
plt.axis('off')
plt.imshow(rgb)plt.subplot(1, 4, 2)
plt.title("Threshold Segmentation")
plt.axis('off')
plt.imshow(threshold_image, cmap='gray')plt.subplot(1, 4, 3)
plt.title("Region Growing Segmentation")
plt.axis('off')
plt.imshow(region_growing_image, cmap='gray')plt.subplot(1, 4, 4)
plt.title("Edge Detection")
plt.axis('off')
plt.imshow(edges_image, cmap='gray')plt.show()


也可以使用segment-anything进行分割,效果如下
请添加图片描述

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

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

相关文章

图片写入GPS经纬高信息

近期项目中需要往java平台传输图片&#xff0c;直接使用QNetworkAccessManager和QHttpMultipart类即可&#xff0c;其他博文中有分享。 主要是平台接口对所传输图片有要求&#xff1a;需要包含GPS信息&#xff08;经度、纬度、高度&#xff09;。 Qt无法直接实现&#xff0c;…

教育平台的创新设计:Spring Boot实现

3系统分析 3.1可行性分析 通过对本信息化在线教学平台实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本信息化在线教学平台采用Spring Boot框架&#xff0c;JA…

【D3.js in Action 3 精译_037】4.1 DIY 实战:D3 源码分析之——d3.timeFormat() 函数

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

Axure重要元件三——中继器修改数据

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;中继器修改数据 主要内容&#xff1a;显示编辑内容、表格赋值、修改数据 应用场景&#xff1a;更新行、表单数据行修改 案例展示&#xff1a; 正文…

前端算法合集-2(含面试题-美团一面)

主要考察的就是数组扁平化,由浅入深吧 ①利用tostring()和split() let arr [1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]] let newarrarr.toString().split(,) let numarrnewarr.map((item)>{itemNumber(item)return item }) console.log(numarr) ②利用…

AndroidStudio移动开发:使用Service播放音乐【步骤】

目录 一、创建新application 二、准备音乐文件 三、创建项目和布局&#xff08;如果需要交互界面的话&#xff0c;这里简单假设一个基本布局&#xff09; 四、创建MusicService类 五、在MainActivity中启动和控制Service&#xff08;也可以另外创建MusicActivity类&#x…

MoeCTF 2024 ---Misc方向WP

安全杂项 signin 题目描述&#xff1a; xdsec的小伙伴们和参赛者来上课&#xff0c;碰巧这一天签到系统坏了&#xff0c;作为老师的你&#xff0c;要帮他们 教师代签。 特殊提醒&#xff1a;luo同学今天好像在宿舍打游戏&#xff0c;不想来上课&#xff0c;这是严重的缺勤行为…

【数据分享】全国人口-人口年龄结构和抚养比(1990-2021年)

数据介绍 一级标题指标名称单位指标解释人口年末总人口万人年末人口数指每年12月31日24时的人口数。年度统计的全国人口总数内未包括香港、澳门特别行政区和台湾省以及海外华侨人数。1981年及以前人口数据为户籍统计数&#xff1b;1982、1990、2000、2010、2020年数据为当年人口…

实操上手TinyEngine低代码引擎插件化开发

1.背景介绍 1.1 TinyEngine 低代码引擎简介 低代码开发是近些年非常热门的一种开发方式&#xff0c;用户可以通过可视化的方式&#xff0c;简单拖拽&#xff0c;不写代码或者编写少量代码&#xff0c;类似搭积木一样搭建业务应用。 TinyEngine是一个强大的低代码引擎&#x…

Redis 常用指令详解

Redis是一款开源的、高性能的键值对存储数据库&#xff0c;常用于缓存、会话存储以及其他需要快速访问的数据场景。本文将介绍Redis的一些常用指令&#xff0c;并通过代码示例进行说明。 一、连接操作指令 1. 连接 Redis 服务器 ./redis-cli -h 127.0.0.1 -p 63792. 认证&a…

计算广告第三版pdf

需要该书pdf版本的同学点赞&#xff0c;私信我&#xff1a;

Spark_入库时报错ORA-00001 unique constraint violated 解决办法

首先可能是数据入重复了 检查一下看看是否入库前删除了分区的数据&#xff0c;可能是重复数据入库的问题&#xff0c;如果不是这个那么继续排查。 入库的数据有问题&#xff0c;检测方法 如果报主键冲突了&#xff0c;则group by 一下id,date&#xff0c;然后select 的时候加一…

飞睿智能超宽带UWB音频传输模块,超低延迟数据传输,实时音频声音更纯净

在信息爆炸的时代&#xff0c;音频传输技术正以未有的速度发展&#xff0c;创新我们进入一个全新的听觉世界。今天&#xff0c;我们要探讨的&#xff0c;就是这场技术创新中的一颗璀璨明星——飞睿智能超宽带&#xff08;UWB&#xff09;音频传输模块。它以其独特的优势&#x…

RHCSA课后练习1

文件管理命令练习 vi/vim练习 vim newfile 按 a 进入编辑模式 &#xff1a;r 文件 在末尾模式中插入文件 &#xff1a;%s/#/ /g 先将#标记为匹配项&#xff1a;%g#d 再删除 : set nu 开启行号 自行组cp 用grep命令找到6段再用tail命令选中第六段 用find查找 [A-Z]代表所有…

如何写一个视频编码器演示篇

先前写过《视频编码原理简介》&#xff0c;有朋友问光代码和文字不太真切&#xff0c;能否补充几张图片&#xff0c;今天我们演示一下&#xff1a; 这是第一帧画面&#xff1a;P1&#xff08;我们的参考帧&#xff09; 这是第二帧画面&#xff1a;P2&#xff08;需要编码的帧&…

python包以及异常、模块、包的综合案例(较难)

1.自定义包 python中模块是一个文件&#xff0c;而包就是一个文件夹 有这个_init_.py就是python包&#xff0c;没有就是简单的文件夹 包的作用&#xff1a;当我们的模块越来越多时&#xff0c;包可以帮助我们管理这些模块&#xff0c;包的作用就是包含多个模块&#xff0c;但包…

基于JSP的校园宿舍电费缴纳系统【附源码】

基于JSP的校园宿舍电费缴纳系统 效果如下&#xff1a; 系统首页界面 学生登录界面 公告栏页面 在线留言页面 个人中心界面 管理员登录界面 管理员功能界面 宿舍信息管理界面 余额管理界面 使用电量管理界面 余额提醒管理界面 学生功能界面 研究背景 随着网络的高速发展&…

使用休眠的方式来解决电脑合盖后偶尔不能正常睡眠的问题

背景描述 用过Windows笔记本电脑的用户应该都偶尔遇到过这样的一个问题&#xff0c;就是电脑直接合上盖后放在包里&#xff0c;按道理来说应该会自动进入睡眠模式&#xff0c;但是等电脑再从包里拿出来时发现电脑很烫&#xff0c;并且已经没电了&#xff0c;似乎并没有进入到休…

【乐企文件生成工程】关于乐企文件生成工程的详细介绍

发票文件生成方式有两种思路&#xff1a; 1、根据已有的OFD模板&#xff0c;动态替换ofd模板内容&#xff1b;之后将ofd转pdf&#xff08;局限&#xff1a;单行问题不大&#xff09; 可在【乐企】专栏查看详细代码详情可以在此处了解【乐企】有关乐企能力测试接口对接-基础版&a…

Web,RESTful API 在微服务中的作用是什么?

大家好&#xff0c;我是锋哥。今天分享关于【Web&#xff0c;RESTful API 在微服务中的作用是什么&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; Web&#xff0c;RESTful API 在微服务中的作用是什么&#xff1f; 在微服务架构中&#xff0c;Web 和 RESTful …