区域转换为二值图像_Matlab图像处理系列教程(一)

2e81504ec50dbc19879f3ae42a937b06.gif

小编近期为大家带来一套全面系统的MATLAB在图像处理中的应用。

灰度处理 

灰度化处理就是将一幅色彩图像转化为灰度图像的过程。彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程。灰度值大的像素点比较亮(像素值最大为255,为白色),反之比较暗(像素最下为0,为黑色)。

X=imread('football.jpg'); %读取文件格式为.jpg,% 文件名为 football 的 RGB 图像的信息I=rgb2gray(X); %将 RGB 图像转换为灰度图像set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置subplot(121),imshow(X); %显示原 RGB 图像subplot(122),imshow(I); %显示转换后灰度图像

b0d0bc918c4736c69dbecd87f9bbc1c3.png

索引图像是一种把像素值直接作为RGB调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值,原理就是矩阵 X 中的每个值,代表的是映射矩阵 map 的行,然后颜色既是map 中这一行的组合色调。MATLAB自带的woman信号构成的图像的像素索引矩阵和调色板矩阵。woman图像是一幅典型的索引图像。其图像矩阵大小为256×256,表示有65535个像素点构成。调色板大小为256×3,表示有256种颜色。我们看到图像索引矩阵的(1,1)单元的内容为124,也就是说这一点像素的颜色就是调色板矩阵的第125行所定义的颜色。可以看到调色板矩阵的第125行为[0.60536,0.60536,0.60536],表示RGB三个分量的比重都比较重且在图像中的地位相同。

索引图像 

RGB = imread('football.jpg'); %读取图像信息[X1,map1]=rgb2ind(RGB,64); %将 RGB 图像转换成索引图像,颜色种数 N 是 64 种 [X2,map2]=rgb2ind(RGB,0.2); %将 RGB 图像转换成索引图像,颜色种数 N 是 216 种map3= colorcube(128); %创建一个指定颜色数目的 RGB 颜色映射表X3=rgb2ind(RGB,map3);set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置figure; subplot(131),imshow(X1,map1); %显示用最小方差法转换后索引图像subplot(132),imshow(X2,map2); %显示用均匀量化法转换后索引图像subplot(133),imshow(X3,map3); %显示用颜色近似法转换后索引图像

82f87d53335ba1577432741e5616219c.png

图像二值化 

图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。

4f7582fc31a73753e5f4548fd104026a.png

I=imread('rice.png'); %读取文件格式为.jpg,BW1=im2bw(I,0.4); %将灰度图像转换为二值图像,level 值为 0.4BW2=im2bw(I,0.6); %将灰度图像转换为二值图像,level 值为 0.6set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置figure;subplot(131),imshow(I); %显示 level=0.4 转换后的二值图像subplot(132),imshow(BW1); %显示 level=0.5 转换后的二值图像subplot(133),imshow(BW2); %显示 level=0.6 转换后的二值图像

图像滤波 

Y=filter2(h,x,’shape’)h为滤波器,x为要滤波的数据,将h放在x上移动进行模板滤波。 shape可取 full,same,valid (不写默认是same)。

I=imread('rice.png'); %读取文件格式为.jpg,H=[1 2 1;0 0 0;-1 -2 -1]; %设置 subol 算子X=filter2(H,I); %对灰度图像 G 进行 2 次滤波,实现边缘检测set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]); %修改图形背景颜色的设置figure,subplot(131),imshow(I);subplot(132),imshow(X,[]),colorbar(); %显示图像,并添加颜色条subplot(133),imshow(X,[]),colorbar('east');

401b5dbccf86e078940016f96ea0caac.png

二维图像纹理映射三维球体表面 

纹理映射是一种将二维图像映射到三维图形表面的技术。这种技术通过转换颜色数据使二维图像与三维图形表面保持一致。在MATLAB中的纹理映射是利用双线性渐变算法来实现图像映射的。

949b0861f4c7589aa244078095dac5b9.png

close all; %关闭当前所有图形窗口clear all; %清空工作空间变量clc; %清屏%I=imread('testpat.png'); I=imread('football.jpg'); %读取图像信息[x,y,z]=sphere; %创建三个(N+1)×(N+1)的矩阵,% 使得 surf(X,Y,Z)建立一个球体,缺省时 N 取 20set(0,'defaultFigurePosition',[100,100,1000,400]); %修改图形图像位置的默认设置set(0,'defaultFigureColor', [1 1 1]) %修改图形背景颜色的设置figure,subplot(121),warp(I); %显示图像映射到矩形平面subplot(122),warp(x,y,z,I); %将二维图像纹理映射三维球体表面grid; %建立网格

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

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

相关文章

7.30 KubeCon2020 | 今天下午5:40 近几年最火爆的技术峰会之分享主题.NET开发者与Kuberentes...

01最负盛名的峰会自2018 年 KubeConCloudNativeCon 首次落地中国以来,CNCF 每年都会在中国举办云原生技术大会。大会每年都能吸引来自五大洲 48 个国家的开源精英和技术大咖前来参会。阿里、华为、腾讯等你所知道的每一家大厂都是KubeCon的大会赞助商。滑动查看更多…

[MyBatisPlus]测试BaseMapper的功能测试自定义功能

测试BaseMapper的功能 添加功能 /*** 实现新增用户信息*/Testpublic void testInsert(){User user new User();user.setName("张三");user.setAge(23);user.setEmail("zhangsanxx.com");int result userMapper.insert(user);System.out.println("r…

利用数组模拟队列和栈(详解)

利用数组模拟队列和栈 目录 利用数组模拟队列和栈 1:使用要领 2:具体代码 3:C栈和队列的链接 1:使用要领 在C语言中如果要用到了队列和栈 但又不想 写队列和栈的方法 ,可已使用数组模拟队列和栈;但如果使用C便可以…

[MyBatisPlus]通用Service接口测试通用Service

通用Service接口 说明: 通用 Service CRUD 封装IService接口,进一步封装 CRUD 采用 get 查询单行 remove 删 除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,泛型 T 为任意实体对象建议如果存在自定义通用 Service 方法的可能&#x…

windows 禁用ipv6服务_在 Windows 7 中禁用IPv6协议/IPv6隧道

How to disable certain Internet Protocol version 6 (IPv6) components in Windows Vista, Windows 7 and Windows Server 2008http://support.microsoft.com/kb/929852/HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\双击 DisabledComponents 来…

程序员修神之路--晦涩难懂的CAP,是否完全正确?

微信搜一搜架构师修行之路菜菜哥,帮忙解决一个问题是不是面试又被虐了?是的呢,这次面试官问我什么是CAP?这个可就说来话长了......01PARTCAP说到CAP,首先不能不说分布式系统,前面几篇也说过,分布…

7-4 是否同一棵二叉搜索树 (25 分)

是否同一棵二叉搜索树 1.题目描述: 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对…

[MyBatisPlus]雪花算法

雪花算法 背景 需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。 数据库的扩展方式主要包括:业务分库、主从复制,数据库分表。 数据库分表 将不同业务数据分散存储到不同的数据库服务器,能够支撑…

pip 设置超时时间_Python pip使用超时问题解决方案

引言之前有位群友在群里发了个问题,说使用pip安装第三方包遇到"Read timeout"。我相信很多时候,大家在使用pip都会遇到这个问题,所以,我想有必要写一遍文章来总结一下。具体如下:解决方案在这之前&#xff0…

如何隐藏运行 winform 程序?

群里有个同学问了问题 如何隐藏运行 winform 程序?,提起了我的兴趣,玩玩呗?那就玩玩吧!第一版 将一个 winform 程序隐藏执行,隐藏执行的方式有很多种,第一个 demo 就用最简单的方式,…

vector的基本用法 (详解 + 代码演示)

前言: vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C STL的一个重要成员,使用它时需要包含头文件:#include; 一、vector 的初始化:可以有五种方式,举…

python定义一个_Python,包括定义一个类

我有一个我要解决的问题:编写一个包含以下内容的类contentResult的定义:•String类型的实例变量winner,初始化为空字符串。在•String类型的实例变量second_place,初始化为空字符串。在•字符串类型的第三位实例变量,初…

[MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic通过全局配置配置主键生成策略

常用注解 TableName 设置实体类所对应的表名 如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗? 我们可以通过配置文件来解决这个问题: TableId 将属性所对应的字段指定为主键 TableId的value属性 TableId的ty…

最小堆和最大堆的建立以及基本操作

前言: 堆的特性:用数组表示的完全二叉树。有序性:任一结点的关键字是其子树所有结点的最大值 (最小值) 堆的本质:就是一颗 完全二叉树 堆的数据存储: 用的是 数组 建堆时主要的操作:就是调整 对数组的元素…

[C#.NET 拾遗补漏]06:单例模式最佳实践

阅读本文大概需要 3 分钟。大家好,这是【C#.NET 拾遗补漏】专辑的第 06 篇文章。今天讲讲大家熟悉的单例模式。单例模式大概是所有设计模式中最简单的一种,如果在面试时被问及熟悉哪些设计模式,你可能第一个答的就是单例模式。单例模式的实现…

字符串是单一字符的无序组合吗_Python学习笔记(八)组合数据类型

Python语言中最常用的组合数据类型有3大类, 分别是集合类型、序列类型和映射类型。集合类型是一个具体的数据类型名称,而序列类型和映射类型是一类数据类型的总称。集合类型是一个元素集合,元素之间无序,相同元素在 集合中唯一存在…

[MyBatisPlus]条件构造器wapper

wapper简介 QueryWrapper 组装查询条件 查询用户名包含a,年龄在20到30之间,邮箱信息不为null的用户信息 package com.xxxx.mybatisplus;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xxxx.mybatisplus.mapper.Use…

7-6 列出连通集 (25 分)(详解)

列出连通集 1&#xff1a;思路 &#xff1a; 利用了邻接矩阵储存数据并建图&#xff0c;然后就是 DFS遍历和BFS遍历 只不过是本题需要输出的是非连通图 连通分量 外加俩函数搞定2&#xff1a;上码 #include<bits/stdc.h> using namespace std;//一些量的定义 queue<…

推荐:适合小白入门的Asp.Net Core 开源学习手册

前言推荐一个入门级的.NET Core开源项目&#xff0c;非常适合新手入门学习.NET Core。开源地址:https://github.com/windsting/little-aspnetcore-book。手册在线下载地址&#xff1a;https://nbarbettini.gitbooks.io/little-asp-net-core-book/content/chapters/mvc-basics/c…

从当前元素继续寻找_云漫圈 | 寻找无序数组的第k大元素

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;小灰来源&#xff1a;程序员小灰本期封面作者&#xff1a;泰勒太乐————— 第二天 —————题目是什么意思呢&#xff1f;比如给定的无序数组如下&#xff1a;如果 k6&#xff0c;也就是要寻找第6大的元素&a…