数字图像处理实验记录十(图像分割实验)

一、基础知识

1、什么是图像分割
图像分割就是指把图像分成各具特性的区域并提取出感兴趣目标的技术和过程,特性可以是灰度、颜色、纹理等,目标可以对应单个区域,也可以对应多个区域。
2、图像分割是怎么实现的
图像分割算法基于像素值的不连续性和相似性,不连续性是图像的边缘,再根据制定的准则将图像分割为相似的区域,如阈值处理、区域生长、区域分离和聚合。

二、实验要求

三、实验记录(具体任务只展示对图片1的处理)

总代码:

clear all;
close all;
clc;
% 实验11 图像分割
H1 = [1,2,1;0,0,0;-1,-2,-1];
H2 = [1,0,-1;2,0,-2;1,0,-1];
H3 = [0,1,2;-1,0,1;-2,-1,0 ];
H4 = [2,1,0;1,0,-1;0,-1,-2 ];
I = imread('01.png');
I = rgb2gray(I);
% 1.分别使用sobel和sobel对角线算子处理图像。并计算图像梯度图。
figure('NumberTitle','off','Name','分割图片1_sobel');I1 = imfilter(I,H1);
I2 = imfilter(I,H2);
I3 = imfilter(I,H3);
I4 = imfilter(I,H4);I_sobel = I1+I2;
I_sobel2 = I3+I4;subplot(2,1,1);imshow(I);title('原图');
subplot(2,2,3);imshow(I_sobel);title('sobel梯度图');
subplot(2,2,4);imshow(I_sobel2);title('sobel对角线梯度图');
figure('NumberTitle','off','Name','分割图片1_LoG');% 使用 LoG (拉普拉斯高斯) 算子进行边缘检测
log_operator = fspecial('log', [5, 5], 1);  % 5x5 LoG 算子,标准差为 1
edge_image_log = abs(imfilter(double(I), log_operator, 'replicate'));% 使用阈值保留大响应区域
threshold = 0.5;  % 设置阈值
res1 = edge_image_log > threshold;% 显示原始图像和边缘检测结果
subplot(1, 2, 1);imshow(I);title('原始图像');subplot(1, 2, 2);imshow(res1);title('LoG 边缘检测结果');
figure('NumberTitle','off','Name','分割图片1_局部阈值法');
% 使用局部阈值法进行图像分割
threshold = adaptthresh(I, 0.7);  % 设置阈值
res2 = imbinarize(I, threshold);% 显示原始图像和局部阈值法分割结果
subplot(1, 2, 1);imshow(I);title('原始图像');
subplot(1, 2, 2);imshow(res2);title('局部阈值法分割结果');I = imread('02.png');
I = rgb2gray(I);
figure('NumberTitle','off','Name','分割图片2_sobel');I1 = imfilter(I,H1);
I2 = imfilter(I,H2);
I3 = imfilter(I,H3);
I4 = imfilter(I,H4);I_sobel = I1+I2;
I_sobel2 = I3+I4;subplot(2,1,1);imshow(I);title('原图');
subplot(2,2,3);imshow(I_sobel);title('sobel梯度图');
subplot(2,2,4);imshow(I_sobel2);title('sobel对角线梯度图');
figure('NumberTitle','off','Name','分割图片2_LoG');% 使用 LoG (拉普拉斯高斯) 算子进行边缘检测
log_operator = fspecial('log', [5, 5], 1);  % 5x5 LoG 算子,标准差为 1
edge_image_log = abs(imfilter(double(I), log_operator, 'replicate'));% 使用阈值保留大响应区域
threshold = 0.5;  % 设置阈值
res1 = edge_image_log > threshold;% 显示原始图像和边缘检测结果
subplot(1, 2, 1);imshow(I);title('原始图像');subplot(1, 2, 2);imshow(res1);title('LoG 边缘检测结果');
figure('NumberTitle','off','Name','分割图片2_局部阈值法');
% 使用局部阈值法进行图像分割
threshold = adaptthresh(I, 0.7);  % 设置阈值
res2 = imbinarize(I, threshold);% 显示原始图像和局部阈值法分割结果
subplot(1, 2, 1);
imshow(I);
title('原始图像');subplot(1, 2, 2);
imshow(res2);
title('局部阈值法分割结果');
I = imread('Acat.png');
I = rgb2gray(I);
figure('NumberTitle','off','Name','分割图片3_sobel');I1 = imfilter(I,H1);
I2 = imfilter(I,H2);
I3 = imfilter(I,H3);
I4 = imfilter(I,H4);I_sobel = I1+I2;
I_sobel2 = I3+I4;subplot(2,1,1);imshow(I);title('原图');
subplot(2,2,3);imshow(I_sobel);title('sobel梯度图');
subplot(2,2,4);imshow(I_sobel2);title('sobel对角线梯度图');
figure('NumberTitle','off','Name','分割图片3_LoG');% 使用 LoG (拉普拉斯高斯) 算子进行边缘检测
log_operator = fspecial('log', [5, 5], 1);  % 5x5 LoG 算子,标准差为 1
edge_image_log = abs(imfilter(double(I), log_operator, 'replicate'));% 使用阈值保留大响应区域
threshold = 0.5;  % 设置阈值
res1 = edge_image_log > threshold;% 显示原始图像和边缘检测结果
subplot(1, 2, 1);imshow(I);title('原始图像');subplot(1, 2, 2);imshow(res1);title('LoG 边缘检测结果');
figure('NumberTitle','off','Name','分割图片3_局部阈值法');
% 使用局部阈值法进行图像分割
threshold = adaptthresh(I, 0.7);  % 设置阈值
res2 = imbinarize(I, threshold);% 显示原始图像和局部阈值法分割结果
subplot(1, 2, 1);
imshow(I);
title('原始图像');subplot(1, 2, 2);
imshow(res2);
title('局部阈值法分割结果');

任务1:

分别使用sobel和sobel对角线算子处理图像。并计算图像梯度图。

H1 = [1,2,1;0,0,0;-1,-2,-1];
H2 = [1,0,-1;2,0,-2;1,0,-1];
H3 = [0,1,2;-1,0,1;-2,-1,0 ];
H4 = [2,1,0;1,0,-1;0,-1,-2 ];
I = imread('01.png');
I = rgb2gray(I);
% 1.分别使用sobel和sobel对角线算子处理图像。并计算图像梯度图。
figure('NumberTitle','off','Name','分割图片1_sobel');I1 = imfilter(I,H1);
I2 = imfilter(I,H2);
I3 = imfilter(I,H3);
I4 = imfilter(I,H4);I_sobel = I1+I2;
I_sobel2 = I3+I4;subplot(2,1,1);imshow(I);title('原图');
subplot(2,2,3);imshow(I_sobel);title('sobel梯度图');
subplot(2,2,4);imshow(I_sobel2);title('sobel对角线梯度图');

任务2:

使用拉普拉斯高斯算子对图像进行边缘检测。(使用LoG算子处理图像,通过阈值保留大响应区域,求出二值图像中位于边缘的像素完成边缘检测)。

figure('NumberTitle','off','Name','分割图片1_LoG');% 使用 LoG (拉普拉斯高斯) 算子进行边缘检测
log_operator = fspecial('log', [5, 5], 1);  % 5x5 LoG 算子,标准差为 1
edge_image_log = abs(imfilter(double(I), log_operator, 'replicate'));% 使用阈值保留大响应区域
threshold = 0.5;  % 设置阈值
res1 = edge_image_log > threshold;% 显示原始图像和边缘检测结果
subplot(1, 2, 1);imshow(I);title('原始图像');subplot(1, 2, 2);imshow(res1);title('LoG 边缘检测结果');

任务3:

采用阈值法实现图像分割,尝试采取局部阈值法,得到更佳的效果。

figure('NumberTitle','off','Name','分割图片1_局部阈值法');
% 使用局部阈值法进行图像分割
threshold = adaptthresh(I, 0.7);  % 设置阈值
res2 = imbinarize(I, threshold);% 显示原始图像和局部阈值法分割结果
subplot(1, 2, 1);imshow(I);title('原始图像');
subplot(1, 2, 2);imshow(res2);title('局部阈值法分割结果');

四、实验结果

任务1:

分别使用sobel和sobel对角线算子处理图像。并计算图像梯度图。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

任务2:

使用拉普拉斯高斯算子对图像进行边缘检测。(使用LoG算子处理图像,通过阈值保留大响应区域,求出二值图像中位于边缘的像素完成边缘检测)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

任务3:

采用阈值法实现图像分割,尝试采取局部阈值法,得到更佳的效果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

ES实战-book笔记1

#索引一个文档,-XPUT手动创建索引, curl -XPUT localhost:9200/get-together/_doc/1?pretty -H Content-Type: application/json -d {"name": "Elasticsearch Denver","organizer": "Lee" } #返回结果 {"_index" : "g…

[CUDA 学习笔记] Reduce 算子优化

Reduce 算子优化 注: 本文主要是对文章 【BBuf的CUDA笔记】三,reduce优化入门学习笔记 - 知乎 的学习整理 Reduce 又称之为归约, 即根据数组中的每个元素得到一个输出值, 常见的包括求和(sum)、取最大值(max)、取最小值(min)等. 前言 本文同样按照英伟达官方 PP…

微信小程序的图片色彩分析,解决画布网络图片报错问题,窃取网络图片的主色调

1、安装 Mini App Color Thief 包 包括下载包,简单使用都有,之前写了,这里就不写了 网址:微信小程序的图片色彩分析,窃取主色调,调色板-CSDN博客 2、 问题和解决方案 问题:由于我们的窃取图片的…

【02】右旋函数(C语言)

目录 题目:给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。 1.暴力求解(轮转k次) 2. 三段逆置求解 ①逆置函数 ②轮转函数 3.空间换时间求解 题目:给定一个整数数组nums,将数组中…

Ubuntu 23.10通过APT安装Open vSwitch

正文共:888 字 8 图,预估阅读时间:1 分钟 先拜年!祝各位龙年行大运,腾跃展宏图! 之前在介绍OpenStack的时候介绍过(什么是OpenStack?),OpenStack是一个开源的…

Acwing---839. 模拟堆

模拟堆 1.题目2.基本思想3.代码实现 1.题目 维护一个集合,初始时集合为空,支持如下几种操作: I x,插入一个数 x;PM,输出当前集合中的最小值;DM,删除当前集合中的最小值&#xff08…

蓝桥杯-X图形

问题描述 给定一个字母矩阵。一个 X 图形由中心点和由中心点向四个 45度斜线方向引出的直线段组成,四条线段的长度相同,而且四条线段上的字母和中心点的字母相同。 一个 X 图形可以使用三个整数 r,c,L 来描述,其中 r,c 表示中心点位于第 r 行…

Vue源码系列讲解——虚拟DOM篇【二】(Vue中的DOM-Diff)

目录 1. 前言 2. patch 3. 创建节点 4. 删除节点 5. 更新节点 6. 总结 1. 前言 在上一篇文章介绍VNode的时候我们说了,VNode最大的用途就是在数据变化前后生成真实DOM对应的虚拟DOM节点,然后就可以对比新旧两份VNode,找出差异所在&…

基于大语言模型的AI Agents

代理(Agent)指能自主感知环境并采取行动实现目标的智能体。基于大语言模型(LLM)的 AI Agent 利用 LLM 进行记忆检索、决策推理和行动顺序选择等,把Agent的智能程度提升到了新的高度。LLM驱动的Agent具体是怎么做的呢&a…

java_error_in_pycharm.hprof文件是什么?能删除吗?

java_error_in_pycharm.hprof文件是什么?能删除吗? 🌵文章目录🌵 🌳引言🌳🌳hprof格式文件介绍🌳🌳java_error_in_pycharm.hprof文件什么情况下能删除🌳&…

Docker-Learn(二)保存、导入、使用Docker镜像

1.保存镜像 根据上一节内容,将创建好镜像进行保存,需要退出当前的已经在运行的docer命令行中断里面,可以通过在终端里面输入指令exit或者按下键盘上的 ctrlD建退出: 回到自己的终端里面,输入指令: docker…

跟着cherno手搓游戏引擎【23】项目维护、2D引擎之前的一些准备

项目维护: 修改文件结构: 头文件自己改改就好了 创建2DRendererLayer: Sandbox2D.h: #pragma once #include "YOTO.h" class Sandbox2D :public YOTO::Layer {public:Sandbox2D();virtual ~Sandbox2D() default;virtual void O…

微软.NET6开发的C#特性——类、结构体和联合体

我是荔园微风,作为一名在IT界整整25年的老兵,看到不少初学者在学习编程语言的过程中如此的痛苦,我决定做点什么,下面我就重点讲讲微软.NET6开发人员需要知道的C#特性,然后比较其他各种语言进行认识。 C#经历了多年发展…

第77讲用户管理功能实现

用户管理功能实现 前端&#xff1a; views/user/index.vue <template><el-card><el-row :gutter"20" class"header"><el-col :span"7"><el-input placeholder"请输入用户昵称..." clearable v-model"…

Linux第43步_移植ST公司uboot的第4步_uboot测试

uboot移植结束后&#xff0c;需要进行测试。 1、烧录程序 1)、将STM32MP157开发板的网络接口与路由器的网络接口通过网线连接起来。 2)、将开发板的串口和电脑通过USB线连接起来。 3)、将开发板的USB OTG接口和电脑通过USB线连接起来。 4)、将开发板上拨码开关拨到“000”…

「Linux」用户操作

root用户 su&#xff1a;切换账户 语法&#xff1a;su [–] [用户名] -&#xff1a;可选&#xff0c;表示是否在切换用户后加载环境变量&#xff0c;建议带上用户名&#xff1a;表示要切换的用户&#xff0c;省略时表示切换到root切换用户后&#xff0c;通过exit命令退回上一个…

LocalAI 部署(主要针对 mac m2 启动)

LocalAI 部署 介绍 LocalAI 是免费的开源 OpenAI 替代方案。 LocalAI 充当 REST API 的直接替代品&#xff0c;与本地推理的 OpenAI API 规范兼容。 它无需 GPU&#xff0c;还有多种用途集成&#xff0c;允许您使用消费级硬件在本地或本地运行 LLM、生成图像、音频等等&#…

spring boot(2.4.x 开始)和spring cloud项目中配置文件application和bootstrap加载顺序

在前面的文章基础上 https://blog.csdn.net/zlpzlpzyd/article/details/136060312 spring boot 2.4.x 版本之前通过 ConfigFileApplicationListener 加载配置 https://github.com/spring-projects/spring-boot/blob/v2.3.12.RELEASE/spring-boot-project/spring-boot/src/mai…

Apache 神禹(shenyu)源码阅读(一)——Admin向Gateway的数据同步(Admin端)

源码版本&#xff1a;2.6.1 单机源码启动项目 启动教程&#xff1a;社区新人开发者启动及开发防踩坑指南 源码阅读 前言 开了个新坑&#xff0c;也是第一次阅读大型项目源码&#xff0c;写文章记录。 在写文章前&#xff0c;已经跑了 Divide 插件体验了一下&#xff08;体…

Codeforces Round 113 (Div. 2)E. Tetrahedron(dp、递推)

文章目录 题面链接题意题解代码总结 题面 链接 E. Tetrahedron 题意 从一个顶点出发走过路径长度为n回到出发点的方案总数 题解 考虑dp f [ i ] [ 0 ∣ 1 ∣ 2 ∣ 3 ] f[i][0|1|2|3] f[i][0∣1∣2∣3]:走了i步&#xff0c;现在在j点的方案总数 转移&#xff1a; f [ i ]…