图像数据格式uint8与double以及图像类型转换

2023-11-13

1. 图像数据格式

double(64位):matlab中数值一般采用double型存储和运算。
uint8(8位无符号整数):为了节省存储空间,matlab为图像提供的特殊数据类型。imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中,因此,matlab读入图像的数据是uint8.

2. 图像类型转换

matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算。所以要先将图像转为double格式的才能运算,区别如下:

img = imread('test.jpg'); % 读入是unit8型(0~255)数据
I1  = im2double(img);    % 把图像转换成double精度类型(0~1)
I2  = double(img)/255;   % uint8转换成double,作用同im2double

补充:
(1) im2double( )和double( )的区别。double( img)就是简单的数据类型转换,将无符号整型转换为双精度浮点型double,但是数据大小没有变化,原本数据是0-255之间,转化后还是0-255。例如原来是255,那么转换后为255.0,小数位0个数是由double数据长度决定,实际数据大小还是255,只不过这个255已经是double类型空间存储了,再增加不会发生溢出情况。而im2double(img)则不仅仅是将uint8转换到double类型,而且把数据大小从0-255映射到0-1区间。
(2)对double型数据进行im2double处理没有任何作用,即imdouble不会对double类型数据0-255映射到区间0-1

img = imread('test.jpg'); % 读入是unit8型(0~255)数据
I1  = im2double(img);    % 把图像转换成double精度类型(0~1)
I2  = double(img)/255;   % uint8转换成double,作用同im2double:

个人体会:在MATLAB中经过部分处理得到double型数据(0-1,如果灰度值超过1可能需要进行归一化操作),如果需要保存但是未来可能还有进一步的图像处理操作,建议将其以.mat矩阵形式保存而不是uint8,否则会大大损失图像精度(如果保存为uint8,下一次处理时有需要从uint8转换为double,在此过程中抹去了灰度值小数的有效数据位)。

3. matlab图像显示imshow类型问题

(1)imshow()显示double型
如果直接对double之间的数据矩阵I运行imshow(I),我们会发现有时候显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0-1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0-255范围。所以对double类型的图像显示的时候,要归一化到0-1之间。
(2)imshow()显示uint8型
对double类型的图像显示的时候,除了归一化到0-1之间,也可以将double类型的0-255数据转为uint8类型。

imshow(I/255);    % 将图像矩阵转化到0-1之间
imshow(I,[]);     % 自动调整数据的范围以便于显示
inshow(uint8(I)); % 转成uint8

补充:imshow()用法:imshow(I,[low high])
用指定的灰度范围 [low high]显示灰度图像I。显示结果,图像中灰度值等于或低于low的都将用黑色显示,而灰度值大于等于high的都显示为白色,介于low和high之间的用其灰度级的默认值的中间色调显示。如果你用了一个空矩阵([])来代替 [low high], imshow 函数将使用 [min(I(:))max(I(:))]作为第二个参数。

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

图像数据格式uint8与double以及图像类型转换 的相关文章

  • 一文读懂如何配置Linux权限

    配置 var tmp fstab权限 Linux中权限是指控制用户或进程对文件或目录的访问 修改或执行的权限 Linux中有3种权限 读取权限 read 写入权限 write 执行权限 execute 权限是用数字表示的 有三位 每一位表示
  • Unity 控制摄像机镜头的上下左右移动

    private float FollowPosx FollowPosy private float moveAmount 5 控制镜头的移动速度 Update is called once per frame void Update if
  • linux 线程优先级设置

    include
  • 用iframe完美嵌入

  • SpringBoot秒杀系统实战13-秒杀商品详情页+秒杀倒计时功能实现

    程序鹏 于 2020 05 08 00 00 00 发布 1326 收藏 4 分类专栏 Spring Boot 秒杀系统 文章标签 java spring boot web 版权 Spring Boot 同时被 2 个专栏收录 29 篇文章
  • LeetCode【28】实现 strStr()

    题目 实现 strStr 函数 给定一个 haystack 字符串和一个 needle 字符串 在 haystack 字符串中找出 needle 字符串出现的第一个位置 从0开始 如果不存在 则返回 1 示例 1 输入 haystack h
  • 使用Python的requests库发送HTTPS请求时的SSL证书验证问题

    问题描述 使用python的requests库去发送https请求 有时候不设置verify False不报错 有时候又报错 问题原因 使用Python的requests库发送HTTPS请求时 设置verify False参数可以跳过SSL
  • java设置有时效的变量_java设置全局变量

    图片来源于网络 如有侵权请联系删除 前言 java系统自带的api很多 而设置全局变量也是有在System对象中一个具体的方法 而Springboot启动类一层层递进的过程中就有使用该方法来存储全局变量 1 实例 在Springboot中的
  • MAC Unity安装教程

    缘起 这边app要做一个简单调研 验证是否可以利用unity改善app中h5页面需要展示的3d和复杂报表效果 于是就此开始了调研 这边只是想简单将unity集成到工程中 然后想办法嵌入h5来进行展示测试 安装地址 https unity3d
  • Java:字符串中a出现的次数

    1 问题描述 求字符串 abcguegduauwdakolaa 中a出现的次数 2 题解 2 1 题解一 思路 每次返回当前下标 使用indexOf求当前下标的后一位到字符串结束出现的第一个a的下标 String s abcguegduau
  • JS的防抖函数理解、手动封装

    1 认识防抖函数 当事件触发时 相应的函数并不会立即触发 而是会等待一定的时间 当事件密集触发时 函数的触发会被频繁的推迟 只有等待了一段时间也没有事件触发 才会真正的执行响应函数 举个例子 防抖函数的引用场景 输入框中频繁的输入内容 搜索
  • 网站开发之DIV+CSS简单布局网站入门篇(五)

    这篇文章主要介绍如何使用DIV和CSS简单布局一个网站的首页 通常将网站划分为顶部 Logo 导航条 中部 页面主要内容 左右栏目 底部 制作方介绍 超链接 这是非常基础的一篇引入性文章 采用案例的方式进行介绍的 希望对你有所帮助 运行结果
  • elementUI的日期选择器获取选择时间的格式,获取时间戳等

    elementUI的日期选择器获取选择时间的格式 获取时间戳等 在使用日期选择器的时候 我们需要把时间进行格式化 然后再传给后端 比如传时间戳 value format timestamp
  • RAID(磁盘阵列)

    一 RAID的简述 RAID是英文 Redundant Array of Independent Disks 的缩写 翻译成中文是 独立磁盘冗余阵列 简称磁盘阵列 Disk Array 简单的说 RAID是一种把多块独立的硬盘 物理硬盘 按
  • vue 打印文件

    1 下载插件 npm install vue print nb save 2 全局注册 在main js 中引入 打印文件 import Print from vue print nb Vue use Print 3 需要打印部分设置 id
  • 三种通信方式——单工、半双工和双工通信

    数据通常是在两个站 点对点 之间进行传输 按照数据流的方向可分为三种传输模式 单 工 半双工 全双工 一 单工通信 simplex 单工通信只支持信号在一个方向上传输 正向或反向 任何时候不能改变信号的传输方向 为保证正确传送数据信号 接收
  • 锐捷6800 vrrp mstp配置实例

    直接把配置考出来了 大家先看看把 6810A show run System software version 2 42 5 Build Feb 2 2007Rel Building configuration Current config
  • 使用SSH远程连接安卓手机Termux - Android手机服务器

    文章目录 1 安装ssh 2 安装cpolar内网穿透 3 远程ssh连接配置 4 公网远程连接 5 固定远程连接地址 转载自cpolar极点云的文章 公网SSH远程连接Termux 电脑使用安卓Termux 无需公网IP 使用安卓机跑东西
  • 常用算法与设计模式

    时间复杂度 二 计算方法 1 一个算法执行所耗费的时间 从理论上是不能算出来的 必须上机运行测试才能知道 但我们不可能也没有必要对每个算法都上机测试 只需知道哪个算法花费的时间多 哪个算法花费的时间少就可以了 并且一个算法花费的时间与算法中
  • Disconnected: No supported authentication methods available (server sent: publickey)

    安装Git客户端后 进行PULL时报如下错误 disconnected no supported authentication methods available server sent publickey keyboard interac

随机推荐

  • Spring:@Valid 和 @Validated

    Validated 常用于对 RequestBody注解中的参数校验生效 用法 PostMapping public UserModel getUser Validated RequestBody UserModel model retur
  • 关于暴力&瞎搞骗分的一些实例

    骗分的实质 不会做的题用最少的时间写代码得到最多的分数 下面是几个乱搞骗分的实例 抛砖引玉让大家感受下骗分的强大 1 NOI 2008 志愿者招募 http codevs cn problem 1803 根据题目范围可以想到直接搜索骗分 期
  • 中职网络安全2022国赛之MS12020漏洞扫描与利用(CVE-2012-0002)

    简介 我做了一个简单的环境来复现这个漏洞 需要虚拟机环境的可以加我qq 3316735898 有什么不会的也可以问我 1 在MSF工具中用search命令搜索MS12020 RDP拒绝服务攻击模块 将回显结果中的漏洞披露时间作为Flag值
  • 手把手教你制作一块Linux开发板(基于Planck-pi)

    文章目录 前言 一 前期准备 二 焊接部分 三 镜像烧写部分 总结 前言 攻城狮星河 Hello 各位野生钢铁侠们 这篇文章初衷是帮助想自己制作linux小板子的小白们 文中会讲的比较基础 大佬勿喷 本教程会以稚晖君开源的 planck p
  • Win7下的C语言开发环境

    本文参考至 http jingyan baidu com article 870c6fc32fa08fb03fe4beae html
  • APS自动排产在企业生产中的应用:生产整体优化

    APS系统 又名高级计划与排程 Advanced Planning and Scheduling 企业管理软件 是对所有资源具有同步的 实时的 具有约束能力的 模拟能力 不论是物料 机器设备 人员 供应 客户需求 运输等影响计划因素 不论是
  • java堆,栈,常量池最通俗易懂的图文解释

    转自 http www iteye com topic 634530 1 寄存器 最快的存储区 由编译器根据需求进行分配 我们在程序中无法控制 2 栈 stack 存放基本类型的变量数据和对象的引用 但对象本身不存放在栈中 而是存放在堆 n
  • 顺序栈和链式栈的定义及基本操作(c++实现)

    顺序栈 include
  • 全网最新首发:Python从入门到精通的完整学习路线图【附:全套Python学习资料】

    后台有很多粉丝朋友们留言问我 Python应该怎么学 爬虫和数据分析怎么学 机器学习怎么学 其实python的门槛不是特别高 但是很多朋友感觉很迷茫 学了一段时间还是不入流 很大一部分原因是你没有一个完整的知识体系 你不知道自己现在的进度
  • Spring事务管理--@Transactional

    使用步骤 步骤一 在spring配置文件中引入
  • 零起步教你搭建Discuz!论坛(转载)

    这段时间 拜美国所赐 大家对鲲鹏生态非常关注 特别是基于鲲鹏920cpu的鲲鹏架构服务器 引起了大家的激烈讨论 应该说大部分网友对鲲鹏架构服务器还是持支持态度的 但是部分不太了解具体情况的网友 特别是一些被以前此起彼伏的 伪自主 真诈骗 的
  • 加法电路原理

    任务1 建立简单电路 1 建立非门 通过http ss sysu edu cn pml se121 hardware1 html 进行相关功能操作 模拟电路如下图 2 验证知道 开关打开时LED灯不亮 关闭时显绿光 故此有表格 3 利用XO
  • WebEye云课堂|BigQuery最佳实践

    企业在布局出海发展中想要轻松搞定 大型数据集 却绝非易事 不论是各种繁杂的存储配置 还是调用各类分析工具来正确处理数据 都有可能因为数据集过于庞大而面临各种各样的困难 我们诚邀您参与此次直播活动 您将全面认识到谷歌云PB级数据仓库 BigQ
  • 从Docker到Kubernetes——Docker构建应用栈(二)

    文章目录 App容器节点 Django 的配置 HAProxy容器节点的配置 应用栈访问测试 App容器节点 Django 的配置 Django容器启动后 需要利用Django框架 开发一个简单的Web程序 首先进入Django的容器 执行
  • 用AutoCompleteTextView实现历史记录提示

    这画面不陌生吧 百度的提示 他的词库并不是历史记录 是搜索引擎收集的当前最常搜索的内容 假如我们也要在android的应用实现如上功能怎么做呢 方法很简单 android已经帮我们写好了api 这里就用到了AutoCompleteTextV
  • JavaScript学习笔记—制作网页轮播图

    JavaScript学习笔记 制作网页轮播图 一 分析 构成模块 最外边一个大的div 里头一个ul ul里每个小li放一张图片 核心的滚动区域 左右两个按钮 小圆点 功能需求 鼠标经过轮播图模块 显示左右按钮 离开隐藏左右按钮 动态生成小
  • VCC和GND短路,怎么找问题?

    在调试电路时 可能经常会遇到VCC和GND短路的情况 板子上的VCC和GND点太多了 新手可能觉得不知道从哪找 下面就介绍几种方法 供大家参考 1 目测 最简单的方法 先用肉眼或放大镜观察 尤其是引脚比较密的芯片和封装较小的电容 焊接不好时
  • Tomcat及项目部署

    一 Tomcat是什么 Tomcat 是基于 Java 实现的 个开源免费 也是被 泛使 的 HTTP 服务器 二 下载安装 官 站 https tomcat apache org 选择其中的 zip 压缩包 下载后解压缩即可 解压缩的 录
  • 编译linux内核(一)

    关于linux启动流程 1 第一阶段 BIOS 1 1 硬件自检 1 2 启动顺序 2 第二阶段 主引导记录 2 1 主引导记录的结构 2 2 分区表 3 第三阶段 硬盘启动 3 1 情况A 卷引导记录 3 2 情况B 扩展分区和逻辑分区
  • 图像数据格式uint8与double以及图像类型转换

    1 图像数据格式 double 64位 matlab中数值一般采用double型存储和运算 uint8 8位无符号整数 为了节省存储空间 matlab为图像提供的特殊数据类型 imread把灰度图像存入一个8位矩阵 当为RGB图像时 就存入