当前位置: 首页 > news >正文

实验八 基于Python的数字图像问题处理

一、实验目的

 培养利用图像处理技术解决实际问题的能力。
 培养利用图像处理技术综合设计实现的能力。
 掌握在Python环境下解决实际问题的能力。
 熟练掌握使用cv2库对图像进行处理
 熟练掌握使用区域生长法提取图片中感兴趣的区域

二、实验内容

本次实验内容为:综合应用-区域生长算法提取感兴趣区域
通过手动设置初始种子点,利用区域生长算法得到脑部区域,这在医学领域可以辅助医生进行医疗诊断。
案例描述:
区域生长算法常用于提取图像中的感兴趣目标区域,为后续图像分析做准备。
本案例采用区域生长算法提取医学图像中的人的脑部区域。
案例数据:数据为1张人脑图片brain.jpg。
 案例步骤参考:
(1)导入包;
(2)读入图片srclmg(单通道灰度图);
(3)构造一个跟原图等大小的零值标记矩阵a;
(4)手动选取初始种子和生长阈值;
(5)运行区域生长算法,得到前景目标标记矩阵a;
(6)由前景目标标记矩阵a跟原图点乘得到感兴趣区域并显示结果。

三、完整实验程序、结果与分析

代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt
from collections import deque# 读取图像为灰度图
srclmg = cv2.imread("D:/tuxiang/brain.jpg", cv2.IMREAD_GRAYSCALE)
if srclmg is None:print("Error: Image not found.")exit()# 显示图像并选择种子点(使用阻塞模式)
plt.imshow(srclmg, cmap='gray')
plt.title('Click on the seed point and close window to continue')
seed_points = plt.ginput(1, timeout=0)  # 必须点击1次
plt.close()# 验证是否获取到有效种子点
if len(seed_points) < 1:print("Error: No seed point selected!")exit()# 转换坐标并初始化参数
x_seed = int(round(seed_points[0][0]))
y_seed = int(round(seed_points[0][1]))
seed = (y_seed, x_seed)  # OpenCV坐标格式 (行, 列)
threshold = 10  # 明确定义阈值参数 <-- 修正关键点# 创建标记矩阵
h, w = srclmg.shape
a = np.zeros_like(srclmg, dtype=np.uint8)# 初始化队列并添加种子点
queue = deque([seed])
a[seed] = 255# 定义8邻域偏移量
neighbors = [(-1, -1), (-1, 0), (-1, 1),(0, -1), (0, 1),(1, -1), (1, 0), (1, 1)]# 区域生长算法
while queue:i, j = queue.popleft()for di, dj in neighbors:ni, nj = i + di, j + djif 0 <= ni < h and 0 <= nj < w and a[ni, nj] == 0:# 使用正确的变量名thresholdif abs(int(srclmg[ni, nj]) - int(srclmg[i, j])) <= threshold:a[ni, nj] = 255queue.append((ni, nj))# 提取感兴趣区域并显示结果
result = cv2.bitwise_and(srclmg, srclmg, mask=a)plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(srclmg, cmap='gray')
plt.title('Original Image')plt.subplot(1, 2, 2)
plt.imshow(result, cmap='gray')
plt.title('Segmented Brain Region')
plt.show()

结果:
在这里插入图片描述

在这里插入图片描述

四、本次作业中出现的问题及心得

通过本次实验,我深刻认识到算法实现中细节把控与参数调优的重要性。

相关文章:

实验八 基于Python的数字图像问题处理

一、实验目的  培养利用图像处理技术解决实际问题的能力。  培养利用图像处理技术综合设计实现的能力。  掌握在Python环境下解决实际问题的能力。  熟练掌握使用cv2库对图像进行处理  熟练掌握使用区域生长法提取图片中感兴趣的区域 二、实验内容 本次实验内容为…...

Dockerfile学习指南

目录 一、Dockerfile 本质与价值 二、基础语法结构 1. 指令格式 2. 核心指令详解 三、构建流程解析 1. 典型构建过程 2. 分层构建原理 四、高级特性 1. 多阶段构建 2. 环境变量管理 3. 健康检查 五、最佳实践指南 1. 优化建议 2. 安全实践 六、典型应用场景 1. …...

数据库原理及其应用 第六次作业

题目 参考答案 题目1. 教材P148第1题 问题&#xff1a;什么是数据库的安全性&#xff1f; 答案&#xff1a;数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏 。它通过用户身份鉴别、存取控制&#xff08;包括自主存取控制和强制存取控制&#x…...

c/c++的opencv的轮廓匹配初识

OpenCV 轮廓匹配&#xff1a;形状识别与比较 &#x1f4d0;✨ 轮廓匹配是计算机视觉中一个重要的技术&#xff0c;它允许我们比较两个形状的相似度。OpenCV 提供了强大的函数来实现这一功能&#xff0c;核心是 cv::matchShapes()。本文将引导你了解轮廓匹配的基本原理、OpenCV…...

Oracle APEX IR报表下载CSV文件的方法

目录 0. 准备工作 1. 下载--自定义SQL 2. 下载--检索结果 0. 准备工作 -- 建表 CREATE TABLE T_DL_EMP(EMPNO NUMBER(4) NOT NULL -- 雇员编号&#xff0c;由四个数字组成。, ENAME VARCHAR2(10) -- 雇员姓名&#xff0c;由10个字符组成。, JOB …...

JVM 双亲委派机制

一、从 JDK 到 JVM&#xff1a;Java 运行环境的基石 在 Java 开发领域&#xff0c;JDK&#xff08;Java Development Kit&#xff09;是开发者的核心工具包。它不仅包含了编译 Java 代码的工具&#xff08;如 javac&#xff09;&#xff0c;还内置了 JRE&#xff08;Java Run…...

shell脚本之条件判断,循环控制,exit详解

if条件语句的语法及案例 一、基本语法结构 1. 单条件判断 if [ 条件 ]; then命令1命令2... fi2. 双分支&#xff08;if-else&#xff09; if [ 条件 ]; then条件为真时执行的命令 else条件为假时执行的命令 fi3. 多分支&#xff08;if-elif-else&#xff09; if [ 条件1 ]…...

什么是私有IP地址?如何判断是不是私有ip地址

在互联网的世界中&#xff0c;IP地址是设备之间通信的基础标识。无论是浏览网页、发送邮件还是在线游戏&#xff0c;IP地址都扮演着至关重要的角色。然而&#xff0c;并非所有的IP地址都是公开的&#xff0c;有些IP地址被保留用于内部网络&#xff0c;这就是我们所说的私有IP地…...

BGP路由策略 基础实验

要求: 1.使用Preva1策略&#xff0c;确保R4通过R2到达192.168.10.0/24 2.用AS_Path策略&#xff0c;确保R4通过R3到达192.168.11.0/24 3.配置MED策略&#xff0c;确保R4通过R3到达192.168.12.0/24 4.使用Local Preference策略&#xff0c;确保R1通过R2到达192.168.1.0/24 …...

Java 原生网络编程(BIO | NIO | Reactor 模式)

1、基本常识 Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层&#xff0c;是一组接口&#xff0c;使用了门面模式对应用层隐藏了传输层以下的实现细节。TCP 用主机的 IP 地址加上主机端口号作为 TCP 连接的端点&#xff0c;该端点叫做套接字 Socket。 比如三次握手&…...

大语言模型 11 - 从0开始训练GPT 0.25B参数量 MiniMind2 准备数据与训练模型 DPO直接偏好优化

写在前面 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是目前最广泛应用的大语言模型架构之一&#xff0c;其强大的自然语言理解与生成能力背后&#xff0c;是一个庞大而精细的训练流程。本文将从宏观到微观&#xff0c;系统讲解GPT的训练过程&#xff0c;…...

【Java ee初阶】HTTP(4)

构造HTTP请求 1&#xff09;开发中&#xff0c;前后端交互。浏览器运行的网页中&#xff0c;构造出HTTP请求 2&#xff09;调试阶段&#xff0c;通过构造HTTP请求测试服务器 朴素的方案&#xff1a; 通过tcp socket 的方式构造HTTP请求 按照HTTP请求格式&#xff0c;往TCP…...

永久免费!专为 Apache Doris 打造的可视化数据管理工具 SelectDB Studio V1.1.0 重磅发布!

作为全球领先的开源实时数据仓库&#xff0c; Apache Doris Github Stars 已超过 13.6k&#xff0c;并在 5000 余家中大型企业生产环境得到广泛应用&#xff0c;支撑业务核心场景&#xff0c;成为众多企业数据分析基础设施不可或缺的重要基座。过去&#xff0c;Apache Doris 用…...

React中useDeferredValue与useTransition终极对比。

文章目录 前言一、核心差异对比二、代码示例对比1. useDeferredValue&#xff1a;延迟搜索结果更新2. useTransition&#xff1a;延迟路由切换 三、应用场景总结四、注意事项五、原理剖析1. 核心机制对比2. 关键差异3. 代码实现原理 总结 前言 在React的并发模式下&#xff0c…...

Git 项目切换到新的远程仓库地址

已存在的 Git 项目切换到新的远程仓库地址&#xff0c;比如你要换成&#xff1a; gitgithub.com:baoing/test-app.git步骤如下&#xff1a; 查看当前的远程仓库地址&#xff08;可选&#xff09; git remote -v你会看到类似&#xff1a; origin gitgithub.com:old-user/old…...

科技晚报 AI 速递:今日科技热点一览 丨 2025 年 5 月 17 日

科技晚报AI速递:今日科技热点一览 丨2025年5月17日 我们为您汇总今日的科技领域最新动向&#xff0c;带您快速了解前沿技术、突破性研究及行业趋势。 黄仁勋劝特朗普&#xff1a;AI 芯片出口规则得改&#xff0c;中国紧追其后&#xff1a;英伟达 CEO 黄仁勋在华盛顿 “山与谷论…...

基于OpenCV的SIFT特征和FLANN匹配器的指纹认证

文章目录 引言一、概述二、代码解析1. 图像显示函数2. 核心认证函数3. 匹配点筛选4. 认证判断 三、主程序四、技术要点五、总结 引言 在计算机视觉领域&#xff0c;图像特征匹配是一个非常重要的技术&#xff0c;广泛应用于物体识别、图像拼接、运动跟踪等场景。今天将介绍一个…...

【Linux】共享内存

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;Linux 目录 ☃️共享内存 &#x1fa84; shmget函数 用来创建共享内存 ✨共享内存的管理指令&#xff1a; &#x1f320; shmid VS key ✨共享内存函数 &#x1f354; shmget() 创建共享内存 &a…...

Cookie、Session、Token

Cookie 1. 什么是cookie? Cookie 是一种由服务器发送到客户端浏览器的小数据片段&#xff0c;用于存储用户的状态信息。例如&#xff0c;用户登录状态或用户偏好设置可以通过Cookie进行管理。计算机cookie更正式地称为 HTTP cookie、网络 cookie、互联网 cookie 或浏览器 coo…...

设计模式Java

UML类图 概述 类图(Class diagram)是显示了模型的静态结构&#xff0c;特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。 类图的作用 在软件工程中&#xff0c;类图是一种静态的结构图&#xff0c…...

Word文档图片排版与批量处理工具推荐

先放下载链接:夸克网盘下载 前几天给大家推荐了 Excel 图片调整软件&#xff0c;当时好多小伙伴问有没有 Word 相关的软件。我在网上找了一圈都没找到合适的&#xff0c;最后在我好久之前记录的一个文档里发现了&#xff0c;这不&#xff0c;马上就来给大家推荐&#xff0c;有…...

[案例五] 实体——赋值质量

最近翻阅了实验室其他人编写的一个“质量赋值”功能,能够直接为实体或组件设定质量。出于好奇,我对其进行了分析。由于自己平时没有用到该功能,所以也借此机会学习一下。 在分析过程中,我发现NX 官方其实并没有提供直接修改质量的功能。一般来说,质量是通过“密度 体积”…...

手撕四种常用设计模式(工厂,策略,代理,单例)

工厂模式 一、工厂模式的总体好处 解耦&#xff1a;客户端与具体实现类解耦&#xff0c;符合“开闭原则”。统一创建&#xff1a;对象创建交由工厂处理&#xff0c;便于集中控制。增强可维护性&#xff1a;新增对象种类时不需要大改动调用代码。便于扩展&#xff1a;易于管理…...

C# 深入理解类(静态函数成员)

静态函数成员 除了静态字段&#xff0c;还有静态函数成员。 如同静态字段&#xff0c;静态函数成员独立于任何类实例。即使没有类的实例&#xff0c;仍然可以调用静 态方法。静态函数成员不能访问实例成员&#xff0c;但能访问其他静态成员。 例如&#xff0c;下面的类包含一…...

数据类型转换

文章目录 基本数据类型&#xff08;primitive type&#xff09;整数类型&#xff1a;浮点类型字符类型boolean类型 类型转换类型转换注意点 基本数据类型&#xff08;primitive type&#xff09; 整数类型&#xff1a; ​ byte占1个字节范围&#xff1a;-128-127 ​ short占…...

深入理解 TypeScript 中的 unknown 类型:安全处理未知数据的最佳实践

在 TypeScript 的类型体系中&#xff0c;unknown 是一个极具特色的类型。它与 any 看似相似&#xff0c;却在安全性上有着本质差异。本文将从设计理念、核心特性、使用场景及最佳实践等方面深入剖析 unknown&#xff0c;帮助开发者在处理动态数据时既能保持灵活性&#xff0c;又…...

AI:人形机器人的应用场景以及商业化落地潜力分析

应用场景分析 人形机器人的设计使其能够适应人类环境&#xff0c;执行多样化任务。以下是未来主要的应用场景及其详细分析&#xff1a; 医疗与护理 具体应用&#xff1a; 老年护理&#xff1a;协助老年人穿衣、洗澡、喂食&#xff0c;或提供情感陪伴。康复辅助&#xff1a;帮助…...

JavaScript入门【3】面向对象

1.对象: 1.概述: 在js中除了5中基本类型之外,剩下得都是对象Object类型(引用类型),他们的顶级父类是Object;2.形式: 在js中,对象类型的格式为key-value形式,key表示属性,value表示属性的值3.创建对象的方式: 方式1:通过new关键字创建(不常用) let person new Object();// 添…...

亲测有效!OGG 创建抽取进程报错 OGG-08241,如何解决?

前言 今天在测试 OGG 一个功能的时候&#xff0c;需要重新初始化 oggca&#xff0c;所以重装了一下 OGG。重建完之后重新添加抽取进程报错&#xff0c;一直无法添加成功&#xff1a; 经过一翻分析&#xff0c;找到了解决方案&#xff0c;本文记录一下解决过程。 问题描述 OG…...

【第二篇】 初步解析Spring Boot

简介 SpringBoot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是为了用来简化Spring应用的初始搭建以及开发过程的。本文章将详细介绍SpringBoot为什么能够简化项目的搭建以及普通的Spring程序的开发。文章内容若存在错误或需改进的地方&#xff0c;欢迎大家指正&#…...

JVM 机制

目录 一、什么是 JVM&#xff1a; 二、JVM 的运行流程&#xff1a; 三、JVM 内存区域划分&#xff1a; 1、( 1 ) 程序计数器&#xff1a; 1、( 2 ) 元数据区&#xff1a; 1、( 3 ) 栈&#xff1a; 1、( 4 ) 堆&#xff1a; 四、类加载&#xff1a; 1、什么时候会触…...

Java泛型详解

文章目录 1. 引言1.1 什么是泛型1.2 为什么需要泛型1.3 泛型的优势2. 泛型基础2.1 泛型类多个类型参数2.2 泛型方法2.3 泛型接口2.4 类型参数命名约定3. 类型擦除3.1 什么是类型擦除3.2 类型擦除的影响1. 无法获取泛型类型参数的实际类型2. 无法创建泛型类型的数组3. 无法使用`…...

机器学习,深度学习,神经网络,深度神经网络之间有何区别?

先说个人观点&#xff1a;机器学习>神经网络>深度学习≈深度神经网络。深度学习是基于深度神经网络的&#xff0c;深度神经网络和浅层神经网络都是神经网络&#xff0c;而机器学习是包括神经网络在内的算法。 一、机器学习 先说涵盖范围最广的机器学习。机器学习&#…...

AtomicInteger

AtomicInteger 是 Java 并发包 (java.util.concurrent.atomic) 中的一个原子类&#xff0c;用于在多线程环境下对整数进行原子操作。 核心特性 原子性 提供线程安全的原子操作&#xff08;如自增、加法、比较并交换等&#xff09;&#xff0c;确保在多线程环境中操作不会被中…...

威布尔比例风险模型(Weibull Proportional Hazards Model, WPHM)详解:原理、应用与实施

威布尔比例风险模型&#xff08;Weibull Proportional Hazards Model, WPHM&#xff09;详解&#xff1a;原理、应用与实施 一、核心原理&#xff1a;从威布尔分布到比例风险模型 1. 威布尔分布的数学本质 威布尔分布通过两个关键参数&#xff08;形状参数 (k) 和尺度参数 (\…...

Dubbo:Docker部署Zookeeper、Dubbo Admin的详细教程和SpringBoot整合Dubbo的实战与演练

&#x1fa81;&#x1f341; 希望本文能给您带来帮助&#xff0c;如果有任何问题&#xff0c;欢迎批评指正&#xff01;&#x1f405;&#x1f43e;&#x1f341;&#x1f425; 文章目录 一、背景二、Dubbo概述三、Dubbo与SpringCloud的关系四、Dubbo技术架构五、Docker安装Zoo…...

Windows 上安装下载并配置 Apache Maven

1. 下载 Maven 访问官网&#xff1a; 打开 Apache Maven 下载页面。 选择版本&#xff1a; 下载最新的 Binary zip archive&#xff08;例如 apache-maven-3.9.9-bin.zip&#xff09;。 注意&#xff1a;不要下载 -src 版本&#xff08;那是源码包&#xff09;。 2. 解压 Mave…...

Unbuntu 命令

Ubuntu 命令速查表​ ​分类​​命令​​功能描述​​示例/常用选项​​​​文件与目录​ls列出目录内容ls -a&#xff08;显示隐藏文件&#xff09;; ls -lh&#xff08;详细列表易读大小&#xff09; cd切换目录cd ~&#xff08;主目录&#xff09;; cd ..&#xff08;上级…...

机器学习-人与机器生数据的区分模型测试-数据处理1

附件为训练数据&#xff0c;总体的流程可以作为参考。 导入依赖 import pandas as pd import os import numpy as np from sklearn.model_selection import train_test_split,GridSearchCV from sklearn.ensemble import RandomForestClassifier,VotingClassifier from skle…...

【Linux】进程间通信(一):认识管道

&#x1f4dd;前言&#xff1a; 这篇文章我们来讲讲进程间通信——认识管道 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;Linux &#x1f380;CSDN主页 愚润求学 &#x1f304;其他专栏&#xff1a;C学习笔记&#xff0c;C语言入门基础&a…...

AMD Vivado™ 设计套件生成加密比特流和加密密钥

概括 重要提示&#xff1a;有关使用AMD Vivado™ Design Suite 2016.4 及更早版本进行 eFUSE 编程的重要更新&#xff0c;请参阅AMD设计咨询 68832 。 本应用说明介绍了使用AMD Vivado™ 设计套件生成加密比特流和加密密钥&#xff08;高级加密标准伽罗瓦/计数器模式 (AES-GCM)…...

第三十四节:特征检测与描述-SIFT/SURF 特征 (专利算法)

一、特征检测:计算机视觉的基石 在计算机视觉领域中,特征检测与描述是实现图像理解的核心技术。就像人类通过识别物体边缘、角点等特征来认知世界,算法通过检测图像中的关键特征点来实现: 图像匹配与拼接 物体识别与跟踪 三维重建 运动分析 其中,SIFT(Scale-Invariant F…...

【AI】SpringAI 第二弹:基于多模型实现流式输出

目录 一、基于多模型实现流式输出 1.1 什么是流式输出 1.2 多模型引入 1.3 代码实现 1.3.1 流式输出的API介绍 1.3.2 Flux 源码分析 二、了解 Reactor 模型 三、SSE 协议 一、基于多模型实现流式输出 1.1 什么是流式输出 流式输出(Streaming Output)是指数据在生成过程…...

SQL语句执行问题

执行顺序 select [all|distinct] <目标列的表达式1> AS [别名], <目标列的表达式2> AS [别名]... from <表名1或视图名1> [别名],<表名2或视图名2> [别名]... [where <条件表达式>] [group by <列名>] [having <条件表达式>] [ord…...

模型量化AWQ和GPTQ哪种效果好?

环境&#xff1a; AWQ GPTQ 问题描述&#xff1a; 模型量化AWQ和GPTQ哪种效果好? 解决方案&#xff1a; 关于AWQ&#xff08;Adaptive Weight Quantization&#xff09;和GPTQ&#xff08;Generative Pre-trained Transformer Quantization&#xff09;这两种量化方法的…...

Github 2025-05-17 Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2025-05-17统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Dart项目1RustDesk: 用Rust编写的开源远程桌面软件 创建周期:1218 天开发语言:Rust, Dart协议类型:GNU Affero General Public Li…...

借助 CodeBuddy 打造我的图标预览平台 —— IconWiz 开发实录

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 想做一款自己的图标预览平台 这段时间我在做前端 UI 设计时&#xff0c;常常需要到处找图标素材&#xff0c;复…...

KL散度 (Kullback-Leibler Divergence)

KL散度&#xff0c;也称为相对熵 (Relative Entropy)&#xff0c;是信息论中一个核心概念&#xff0c;用于衡量两个概率分布之间的差异。给定两个概率分布 P ( x ) P(x) P(x) 和 Q ( x ) Q(x) Q(x)&#xff08;对于离散随机变量&#xff09;或 p ( x ) p(x) p(x) 和 q ( x …...

【Linux网络】NAT和代理服务

NAT 之前我们讨论了&#xff0c;IPv4协议中&#xff0c;IP地址数量不充足的问题。 原始报文途径路由器WAN口时&#xff0c;对报文中的源IP进行替换的过程&#xff0c;叫做NAT。 NAT技术当前解决IP地址不够用的主要手段&#xff0c;是路由器的一个重要功能&#xff1a; NAT能…...

DeepSeek赋能电商,智能客服机器人破解大型活动人力困境

1. DeepSeek 与电商客服结合的背景 1.1 电商行业客服需求特点 电商行业具有独特的客服需求特点&#xff0c;这些特点决定了智能客服机器人在该行业的必要性和重要性。 高并发性&#xff1a;电商平台的用户数量庞大&#xff0c;尤其是在促销活动期间&#xff0c;用户咨询量会…...