HALCON-从入门到入门-图像格式的互相转换

1.废话

上次说到了图片的读取和写入到本地,这次说一下图片的格式相关。

位图和矢量图

photoshop处理出来的图片肯定叫做图片,那么coreDraw处理出来的图片是不是也叫图片。

之间就有区分,一种叫做位图,一种叫做矢量图

位图和矢量图在定义、分辨率、色彩丰富度、文件大小和绘制工具等方面存在显著差异。选择使用哪种类型的图像取决于具体的应用场景和需求。例如,如果需要制作色彩丰富、逼真的自然景象或照片,位图是更好的选择;而如果需要制作可无限放大且不失真的Logo、图标或图形设计,矢量图则更为合适。

  • 位图
    • 也称为点阵图像或栅格图像,由像素(图片元素)的单个点组成。
    • 每个像素点都有特定的位置和颜色信息。
    • 存储原理是将图片的每一个像素点的颜色保存起来。
    • 与分辨率紧密相关,分辨率越高,图像越清晰。
    • 放大图像时,像素点也会放大,导致图像出现马赛克状,即失真现象。
    • 色彩丰富,能够制作出色彩和亮度变化丰富的图像。
    • 可以逼真地表现自然界各类实物。
  • 矢量图
    • 也称为面向对象的图像或绘图图像,在数学上定义为一系列由点连接的线。
    • 矢量文件中的图形元素称为对象,每个对象都是一个自成一体的实体,具有颜色、形状、轮廓、大小和屏幕位置等属性。
    • 存储原理是使用一系列数学方程表示图片中的线条,再另外保存每个区域的颜色信息。
    • 与分辨率无关,可以无限放大而不失真。
    • 无论放大、缩小或旋转,都保持清晰度和图像质量。
    • 色彩相对不丰富,难以表现色彩层次丰富的逼真图像效果。
    • 常用于表示标识、图标、Logo等简单直接的图像。

我们处理的当然是位图,至于矢量图我们是不关心的,这里只是作为图像概念的扩充。


图像在硬盘中保存的时候有多种格式,比如说jpg,png这种

那么硬盘上的图像文件主要的经常用到的格式有哪些呢

  1. BMP格式
    • 全称:BitMaP
    • 与硬件设备无关的图像文件格式
    • 使用位映射存储格式,不采用其他任何压缩,因此文件占用空间较大
    • 图像深度可选lbit、4bit、8bit及24bit
    • Windows环境中运行的图形图像软件都支持BMP图像格式
  2. JPEG格式
    • 全称:Joint Photographic Experts Group
    • 俗称:JPG
    • 一种有损压缩格式
    • 优点:图像压缩在很小的储存空间,适合网络传输
    • 缺点:图像中重复或不重要的资料会被丢失,容易造成图像数据的损伤
  3. PNG格式
    • 全称:Portable Network Graphics
    • 优点:提供无损压缩图像文件,长度比GIF小30%
    • 支持24位和48位真彩色图像
    • 支持透明背景和变显图像
  4. GIF格式
    • 全称:Graphics Interchange Format
    • 优点:支持透明背景和动画
    • 只支持256色
    • 压缩率一般在50%左右
  5. TIFF格式
    • 全称:Tagged Image File Format
    • 优点:无损压缩,2-3倍的压缩比
  6. RAW格式
    • 未经处理直接从CCD或CMOS上所得到的原始图像信息
    • 文件超大,但特别适合后期出片调整

此外,还有其他一些格式如PSD(Photoshop的源文件格式)、AI(Adobe Illustrator的文件格式)、EPS(封装的PostScript文件)等,这些格式通常用于专业的图形设计和编辑软件。

在halcon中的图像格式有哪些呢?

当我们读取一张图片进来的时候,我们按照彩色和黑白分,有通道数的概念。

三通道的可以表示彩色图像,单通道的只能是黑白图像。

举个例子:

我们读取了一张图像,这张图像在硬盘中是jpg格式,那么读取到halcon中,看得出来是带颜色的,旁边有棕色的桌面。

我们把鼠标指向变量窗口看一下。

出来一个框,看起来这张图的通道数是3

也就是说这是一张三通道的图,不难理解,这个三个通道应该就是RGB三通道。

这张图的类型是byte,什么意思呢,就是每个通道的像素的灰度值,取值范围是0-255。

用byte 一个字节表示,8bit表示,换算到十进制就是0-255.

在halcon中除了常用的byte格式之外,还有real格式(灰度值取值范围类似于float)

uint2格式,灰度值取值范围为0-65535

同理,int2格式的取值范围为-32768-32767

halcon中图像像素灰度值的存储内存不同,格式不同,一共如上图所示。

2.彩色图像转黑白图像

跟着我们上面的步骤,我们读进来一张三通道的图,那么我们把通道给分开

把每个通道给分出来,使用下面的算子

decompose3 (Image2, Image1, Image21, Image3)

将一张三通道的图片分成三张单通道的图片,合理

目前三张都是黑白的图片了。

那假如说我现在手里有三张黑白的图片 byte类型的,我想合成一张彩色的图像怎么做的

下面这个算子

compose3 (Image1, Image1, Image1, MultiChannelImage)

这两个算子还有很多类似的算子

不光可以拆分或者合并三通道的,若干通道的都行。

为什么我们要拆分彩色图片呢,因为多通道图片多了一个通道维度,很多时候不好处理,很多算子对应的目标都是单通道图片,所以我们就拆分通道分别处理。

彩色转黑白图

不想拆分通道,简单点,之间将彩色图转黑白,使用下面算子


rgb1_to_gray (Image2, GrayImage)

这个算子就是将三个通道的值按照一定比例相乘相加得到新图片的灰度值(单通道的)

具体比例系数是

好的,处理完彩色图像之后如下图所示

3.byte转real

0-255对于我来说不够用,我想要每个像素的灰度值表示为小数

这时候就需要用到我们的real格式

转图像合适的算子如下:

convert_image_type (GrayImage, ImageConverted, 'real')

在转换的时候记得注意,如果是小转大:

        比如说byte转real,那么直接转,不会丢失精度;

        如果说是real转byte,大于255的灰度值会变为255,灰度值为小数的会忽略掉后面的小数。

这个需要注意,以免出现图像处理异常。

转换之后我们得到了real格式的图像。

同理,其他格式也是这么转换过来的,不同的格式适用于不同的计算场景。

常规的机器视觉,byte类型图像完全够用,设计到3d视觉,需要用到深度图的,那么uint2格式的深度图能够更加适合。

4.叮嘱

另外如果是特殊格式需要保存到本地的话,建议都用tiff格式,其他格式可能会出现意想不到的问题。

比如我现在有一张5通道的图片,前三个通道的颜色信息,第四个通道是法向量信息,第五个通道是高度信息,那么我将这张图存成bmp格式就会出现问题。

另外png格式理论上来说可以保存单通道的图像,也可以保存4个通道的图像,第四个通道是透明度通道,因为png格式图片允许其中某些像素是透明的,而bmp格式就不允许了。

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

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

相关文章

创建一个支持切换阅读模式和答题模式的Anki问答题模板

为了备考某个需要默写的科目,做了个问答题笔记模板,如下: 在上图的回答栏填写答案后,点击显示答案按钮转到背面: 只实现上面的功能是很简单的,直接基于Anki自带的问答题模板添加自己需要的字段即可。问题…

基于卷积-小波神经网络的SAR图像海冰变化检测方法(MATLAB R2018A)

海冰是冰冻圈的重要组成部分,海冰的变化信息对航行安全和自然资源开采等非常重要,许多船舶没有加固防冰设备,因此,必须避开所有的冰区。尤其当冰压很高时,即使破冰船也很难在冰层中前行。为了安全航行,获取…

自动化办公01 smtplib 邮件⾃动发送

目录 一、准备需要发送邮件的邮箱账号 二、发送邮箱的基本步骤 1. 登录邮箱 2. 准备数据 3. 发送邮件 三、特殊内容的发送 1. 发送附件 2. 发送图片 3. 发送超文本内容 4.邮件模板内容 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议…

天气数据集-Jena Climate dataset

天气数据集-Jena Climate dataset 1.数据集基本信息 Dataset Name: mpi_saale_2021b.csv Size: 26495 rows; 1 year (2021), 10 min 气象学、农业、环境科学 开源机构: Max Planck Institute for Biogeochemistry 2.数据特征 2.1 特征简介 数据共有31个特征,…

使用 Scapy 库编写 Ping of Death 攻击脚本

一、介绍 1.1 概述 Ping of Death(PoD)攻击是一种历史悠久的拒绝服务(DoS)攻击,攻击者通过发送特制的畸形ICMP Echo请求数据包,导致目标系统无法正确处理,从而导致系统崩溃、重启或无法响应正…

【最新鸿蒙应用开发】——什么是状态管理?

状态管理 在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染&#xf…

【Postman接口测试】第四节.Postman接口测试项目实战(上)

文章目录 前言一、项目介绍 1.1 项目界面功能介绍 1.2 项目测试接口介绍 1.3 项目测试接口流程二、HTTP协议三、接口测试中接口规范四、项目合同新增业务介绍 4.0 接口测试用例设计流程 4.1 登录接口调试 4.2 登录接口自动关联 4.3 添加…

攻防世界---web---Web_php_unserialize

1、题目描述 2、 3、分析代码 class Demo { private $file fl4g.php; }:定义了一个名为Demo的类,该类有一个私有属性$file,默认值为fl4g.php。 $a serialize(new Demo);:创建了一个Demo类的实例,并对其进行序列化&a…

【机器学习】基于OpenCV和TensorFlow的MobileNetV2模型的物种识别与个体相似度分析

在计算机视觉领域,物种识别和图像相似度比较是两个重要的研究方向。本文通过结合深度学习和图像处理技术,基于OpenCV和TensorFlow的MobileNetV2的预训练模型模,实现物种识别和个体相似度分析。本文详细介绍该实验过程并提供相关代码。 一、名…

eNSP学习——VRRP基础配置

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、部署OSPF网络 3、配置VRRP协议 4、验证VRRP主备切换 主要命令 //创建备份组 [R2]int g0/0/1 [R2-GigabitEthernet0/0/1]vrrp vrid 1 virtual-ip 192.168.1.254 //修改优先级 …

自动评论自动私信引流系统,自动化时代的挑战与机遇

随着科技的飞速发展,自动化技术已经渗透到我们生活的方方面面。从工业生产线上的机械臂到家庭中的智能助手,自动化不仅改变了我们的工作方式,也在重塑着社会的面貌。然而,在享受自动化带来的便利和效率的同时,我们也必…

Java实现对PDF、纵向、横向页面添加自定义水印功能

Java实现对PDF、纵向、横向页面添加自定义水印 效果图 -- 纵向 页面PDF使用到JAR Maven依赖版本效果图 -- 横向页面PDF 效果图 – 纵向 页面PDF 代码如下&#xff1a; 使用到JAR Maven依赖版本 <dependency><groupId>org.apache.pdfbox</groupId><artifa…

FLINK-窗口算子

参考资料 官方文档- WindowFlink中的时间和窗口之窗口 窗口 在流处理中&#xff0c;我们往往需要面对的是连续不断、无休无止的无界流&#xff0c;不可能等到所有所有数据都到齐了才开始处理。所以聚合计算其实只能针对当前已有的数据——之后再有数据到来&#xff0c;就需要继…

【计算机毕设】SpringBoot校园资料分享平台的设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 本项目旨在设计并实现一个基于SpringBoot的校园资料分享平台&#xff0c;以满足学生在学习过程中对资料分享和获取的需求。具体目标包括&#xff1a…

ServletContext

一、ServletContext对象简介 ServletContext 是应用上下文对象。每一个应用中只有一个 ServletContext 对象, 这个ServletContext 对象被所有Servlet所共享. 在 Servlet 规范中&#xff0c;一共有 4 个域对象。ServletContext 就是其中的一个。它也是 web 应用中最大的作用域&a…

装饰器,状态管理和if判断(HarmonyOS学习第六课)

Builder装饰器-自定义构建函数 前面介绍了如何创建一个自定义组件。该自定义组件内部UI结构固定&#xff0c;仅与使方法进行数据传递。ArkUI还提供了一种更轻量的UI 元素复用机制Builder&#xff0c;Builder 所装饰的函数遵循build( )函数语法规则&#xff0c;开发者可以将重…

飞书API(11):阿里云MaxCompute分区表入库

一、引入 前面入库阿里云 MaxCompute 的数据都是读取之后直接写入&#xff0c;保留数据最新的状态&#xff0c;如果我要保留历史的状态&#xff0c;怎么办呢&#xff1f;MaxCompute 表有一个分区功能&#xff0c;可以自行定义分区。我们可以使用 MaxCompute 表的分区功能&…

vue3-调用API实操-调用开源头像接口

文档部分 这边使用是开源的API 请求地址: &#xff1a;https://api.uomg.com/api/rand.avatar 返回格式 : json/images 请求方式: get/post 请求实例: https://api.uomg.com/api/rand.avatar?sort男&formatjson 请求参数 请求参数说明 名称必填类型说明sort否strin…

云原生架构案例分析_2.云原生技术助力某汽车公司数字化转型实践

名词解释&#xff1a; 互联网 在“互联网”模式下&#xff0c;我们仅仅把互联网看作是一种传播工具、传播手段、传播渠道和传播平台&#xff0c;对于互联网的应用大体上是在既有的运作逻辑的基础之上&#xff0c;把互联网作为延伸传媒影响力、价值和功能的一种延伸型工具&…

打造智能化未来:智能运维系统架构解析与应用实践

在数字化转型的大背景下&#xff0c;智能运维系统成为了企业提升效率、降低成本、增强安全性的关键利器。本文将深入探讨智能运维系统的技术架构&#xff0c;介绍其核心要素和应用实践&#xff0c;帮助读者全面了解智能运维系统的概念、优势和应用价值。 ### 1. 智能运维系统的…