2、matlab 图像分割(1)

2023-10-31

目的:利用图像的坐标点,判断出想要分割出的部分,利用 matlab 语法实现分割


1. 基本语法

1.1 定义矩阵

var =[ 1 2 3;
	   4 5 6];

定义一个 2×3 的矩阵,该变量会出现在工作区,可以在命令行用变量输出该矩阵

在这里插入图片描述

1.2 find 函数

find(var)

查找出矩阵 var 中的非零坐标并返回这些坐标的点,可以返回为一维数组或二维数组

当返回给一个变量时,是一个一维数组,数组中存的是矩阵中 非 0 点 的位置编号,原图中的位置编号从上到下、从左到右顺序为1、2、3···
在这里插入图片描述
当返回给一个矩阵时,将横纵坐标分别赋值给两个矩阵变量,两个变量相同位置的值确定一个非 0 像素点的坐标。
在这里插入图片描述

可以为 find 中参数指定条件,比如查找大于或等于某个值的元素的坐标:
在这里插入图片描述在这里插入图片描述


1.3 切割图像

a(r1:r2, c1:c2)

返回矩阵或图片的 r1r2 行, c1c2 列,其中每个 " , " 区分一个维度,可以根据需要选择有几个维度。单独一个 " : " 作为一个维度代表选取所有行或列。

图片可以理解为一个矩阵,因为图片是由很多的像素点组成的,每个像素点都有自己的值,不同的值用来表示不同的颜色,因此图片就是一个矩阵。
在这里插入图片描述

2. 图像分割

2.1 切割月亮(1)

将下图中的月亮用以上函数切割成单独的图片。
在这里插入图片描述
步骤:

  1. 先转换为二值图,图片在二值图的情况下较好处理。由于二值图只有一个维度,所以只有一个维度的横纵坐标,而每个像素点的取值只有 01 ,方便查找非 0 像素点,从而确定月亮的边界,再在原图找到相应位置,利用上面的函数进行切割。
  2. 利用 find 找到二值图中所有的非 0 元素(二值图黑色为 0,白色为1)。
  3. 找到非 0 元素的横纵坐标的范围,截取原图中的这个范围的图片即可。

代码实现:

clear,clc,close all;
f=imread('moon.jpg');
g=rgb2gray(f);
b=imbinarize(g);   %转换为二值图
imshow(b);
[r,c]=find(b);     %找到非零的坐标赋给[r,c]
result=f(min(r):max(r),min(c):max(c),:);    %该句解释在下方
figure,imshow(result);
result=f(min(r):max(r), min(c):max(c),:);

对图片 f 进行切割操作,因为 f 是 rgb 图,有三个维度,所以操作中有三个维度,在上面的 find 函数是在二值图中找到非零的横纵坐标的值,r 中存的是非 0 像素点的行的所有坐标,c 存的是非 0 像素点的列的所有坐标。
根据图像可知,行坐标的最大值和最小值是月亮的上下边界,所以用 min( r ):max( r ) 选中;用 min( c ):max( c ) 选中列坐标的最大值和最小值,是月亮的左右边界;第三维为色彩,用 ’ : ’ 全部选中,显示彩色图(具体为什么会显示彩色图,这里有讲解,大家可以参考理解)。

代码运行效果如下:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2、matlab 图像分割(1) 的相关文章

  • Android--Recovery模块之恢复出厂设置

    一 在进行详细流程分析之前 先看一下几个重要概念 一 Recovery的工作需要整个软件平台的配合 从架构角度看 有三个部分 1 Main system 用boot img启动的Linux系统 Android的正常工作模式 2 Recove
  • 【MyBatis】自定义resultMap三种映射关系

    目录 一 一对一映射 One to One 1 1 表关系 1 2 resultMap设置自定义映射 二 一对多映射 One to Many 2 1 创建实体 2 2 级联方式处理映射关系 2 3 定义SQL 2 4 OrderMapper
  • jquery 购物车飞入特效--全网最简单

    有个插件 jquery fly js 可以搞定 好象特点之一是有抛物线效果 如果要求不高 可以看看我这个 其实也是在网上看到的 作了些改进 三个元素 被点击的div 飞翔的小红点 装小红点的div 购物车 div 被点击的 div div
  • (一)@Input属性讨论

    Input Declares a data bound input property Angular automatically updates data bound properties during change detection 大
  • PAT C入门题目-7-111 输出学生成绩 (20 分)(动态内存分配)

    7 111 输出学生成绩 20 分 本题要求编写程序 根据输入学生的成绩 统计并输出学生的平均成绩 最高成绩和最低成绩 建议使用动态内存分配来实现 输入格式 输入第一行首先给出一个正整数N 表示学生的个数 接下来一行给出N个学生的成绩 数字
  • vue3+uniapp+TS+Vite+uView-plus(uniapp-nutui)微信小程序模板搭建

    官网下载目录结构 DCloud uni preset vue 码云 开源中国 gitee com 下载zip压缩包即可 目录 一 依赖下载 二 运行 三 vite config json文件修改 四 uView plus组件库加载 1 安装
  • Android Studio之BuildConfig类

    转自 http blog csdn net lvxiangan article details 71601451 Android Studio开发中 把一个module输出打包为jar文件 我们会发现里面多了一个BuildConfig类 但

随机推荐

  • vue中慎用style的scoped属性

    在vue组件中 在style标签上添加scoped属性 以表示它的样式作用于当下的模块 很好的实现了样式私有化的目的 这是一个非常好的机制 但是为什么要慎用呢 在实际业务中我们往往会对公共组件样式做细微的调整 如果添加了scoped属性 那
  • 前后端通过局域网对接

    因为前后端分离写项目 后端同学在隔壁宿舍 我们通过连他的热点来进行前后端的对接 第一步 关闭防火墙 第二部 找到自己ip地址 无线局域网Ipv4地址 然后前后端在 cmd中 通过 ping 加上地址可以连接成功 然后就可以访问后端的接口了
  • Linux与Windows:操作系统之争及个人体验比较

    在当今数码化的世界中 操作系统扮演着关键的角色 Linux和Windows作为最受欢迎和广泛使用的操作系统之一 具有不同的特点和优势 作为一个AI模型 我虽然没有真正的使用经验 但我可以就这两个操作系统进行比较 并提供一些观点供您参考 Li
  • 利用注册表修改3389端口

    步骤 打开 开始 运行 输入 regedit 打开注册表 进入以下路径 HKEY LOCAL MACHINE SYSTEM CurrentControlSet Control Terminal Server Wds rdpwd Tds tc
  • 1060- 礼物的最大价值

    题目如下 在一个 m n 的棋盘的每一格都放有一个礼物 每个礼物都有一定的价值 价值大于 0 你可以从棋盘的左上角开始拿格子里的礼物 并每次向右或者向下移动一格 直到到达棋盘的右下角 给定一个棋盘及其上面的礼物的价值 请计算你最多能拿到多少
  • VMware 搭建私有云

    我们的目的是在VMware workstation 上安装Centos 7系统 并配置用远程桌面访问虚拟机 在虚拟机上安装Centos 7 首先按照老师给出的博客 VirtualBox 安装 Centos 7 笔记 进行安装 博主使用的是v
  • MPU6050 加速度计和陀螺仪传感器与 Arduino 连接

    MPU6050 加速度计和陀螺仪传感器与 Arduino 连接 前言 MPU6050 模块引脚 MPU6050 模块组成 MPU6050陀螺仪传感器模块电路图 MPU6050模块如何工作 MEMS加速度计如何工作 MEMS陀螺仪如何工作 常
  • 刷题day67:零钱兑换II(完全背包开始)

    题意描述 给你一个整数数组 coins 表示不同面额的硬币 另给一个整数 amount 表示总金额 请你计算并返回可以凑成总金额的硬币组合数 如果任何硬币组合都无法凑出总金额 返回 0 假设每一种面额的硬币有无限个 题目数据保证结果符合 3
  • 杭电OJ——1007 Quoit Design(最近点对问题)

    Quoit Design Problem Description Have you ever played quoit in a playground Quoit is a game in which flat rings are pitc
  • DOT:视觉SLAM的动态目标物跟踪

    点云PCL免费知识星球 点云论文速读 文章 DOT Dynamic Object Tracking for Visual SLAM 作者 Irene Ballester Alejandro Fontan Javier Civera 翻译 分
  • winServer服务器搭建nginx配置https问题及流程:

    问题 1 配置切记要仔细 每个配置项最后都应以 结尾 报错如下 2022 07 11 12 51 29 emerg 3284 4856 worker processes directive is not allowed here in F
  • PML之平均 、中值 、众数、标准偏差、方差

    NumPy模块为此提供了一种方法 可以计算平均 中值和众数 1 平均值 import numpy as np value 2 4 6 14 34 88 98 17 47 计算平均值 mean np mean value print mean
  • 深度学习模型系列一——多分类模型——Softmax 回归

    Softmax 回归 1 概述 2 Softmax回归模型 3 Softmax函数 4 Softmax回归的决策函数 5 参数估计 5 1 损失函数 5 2 梯度估计 5 2 1 Softmax函数的导数 5 2 2 梯度 6 模型预测与评
  • JavaWeb——动态 web 资源开发

    目录 Servlet 01 系统架构 1 1 系统架构包括什么形式 1 2 C S架构 1 3 B S架构 1 4 C S和B S结构的系统如何选择 1 5 开发一个WEB系统需要哪些技术 1 6 Java EE是什么 02 B S结构的系
  • VScode在开发vue时常用的插件,干就完了

    Auto Rename Tag 自动成对修改标签名 ESLint HTML Snippets Chinese Simplified Language Pack for Visual Studio Code 汉化vscode Live Ser
  • 安装nrm包时控制台报错

    安装nrm包时控制台报错 C Users 11359 AppData Roaming npm node modules nrm cli js 9 const open require open Error ERR REQUIRE ESM r
  • Floating UI 使用经验分享 - Dialog

    上文 Floating UI 使用经验分享 Popover 在本文中 我将分享如何使用 Floating UI 来创建另一种常见的浮动 UI 组件 Dialog 对话框 Dialog 是一个浮动元素 显示需要立即关注的信息 他会出现在页面内
  • 宝塔7.9最新企业版免授权无后门

    宝塔面板大家应该都知道吧 今天带来的是宝塔面板企业版免授权 无需绑定账号版本 用ssh链接上我们的服务器输入下列命令回车 然后过一会会让输入一个东西 输y即可 与正版宝塔安装步骤一致 yum install y wget wget O in
  • mysql干货——数据库字符集和校对规则详解

    一 什么是字符集 字符是多个文字和符号的总称 包括各个国家的文字 标点符号 图形符号 数字等 字符集多个字符的集合 字符集合种类较多 每个字符集包含的字符的个数不同 对于字符集不支持的字符 则以乱码显示 常见的字符集有ASCII字符集 GB
  • 2、matlab 图像分割(1)

    目的 利用图像的坐标点 判断出想要分割出的部分 利用 matlab 语法实现分割 1 基本语法 1 1 定义矩阵 var 1 2 3 4 5 6 定义一个 2 3 的矩阵 该变量会出现在工作区 可以在命令行用变量输出该矩阵 1 2 find