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.mzph.cn/bicheng/20960.shtml

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

相关文章

AI大模型探索之路-实战篇13: 从对话到报告:打造能记录和分析的Agent智能数据分析平台

系列篇章💥 AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5:探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6:掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

echarts 图表不显示的问题

是这样的,点击详情,再点击统计,切换的时候就不会显示echarts图表,刚开始使用的是next Tick,没有使用定时器,后来加上了定时器就实现了如下所示: 代码是如下 const chartContainer ref(null); …

【面试题-011】如何设计一个三高系统

设计一个“三高”系统(即高可用、高性能、高并发)需要综合考虑系统架构、技术选型、运维管理等多个方面。以下是一些关键的设计原则和步骤: 1. 确定系统需求和目标 高可用:系统需要能够承受故障,并在故障发生时快速恢…

【Text2SQL 论文】DBCopilot:将 NL 查询扩展到大规模数据库

论文:DBCopilot: Scaling Natural Language Querying to Massive Databases ⭐⭐⭐⭐ Code: DBCopilot | GitHub 一、论文速读 论文认为目前的 Text2SQL 研究大多只关注具有少量 table 的单个数据库上的查询,但在面对大规模数据库和数据仓库的查询时时却…

618商品网页制作编程示例开发案列优质学习资料资源工具与案列应用场景开发文档教程资料】

创建一个简单的商品网页可以用HTML、CSS和JavaScript来实现。这种网页会包括商品的图片、名称、描述、价格和购买按钮等。下面是一个详细的源码案例及其讲解: 1. 文件结构 假设我们有以下文件结构: /product-page/imagesproduct.jpgindex.htmlstyle.c…

UML静态图-对象图

概述 静态图包含类图、对象图和包图的主要目的是在系统详细设计阶段,帮助系统设计人员以一种可视化的方式来理解系统的内部结构和代码结构,包括类的细节、类的属性和操作、类的依赖关系和调用关系、类的包和包的依赖关系。 对象图与类图之间的关系&…

python中获取文件和图片类型的方法

目录 一. 使用第三方库 filetype安装 filetype 库:示例代码: 二. 使用第三方库 Pillow(针对图片)安装 Pillow 库:示例代码: 三. 使用Python标准库imghdr(针对图片)示例代码&#xff…

Linux 命令:tail

1. 写在前面 本文主要介绍 Linux tail 命令:可用于查看文件的内容,有一个常用的参数 -f 常用于查阅实时更新的日志文件。 关注 公众号 获取最新博文: 滑翔的纸飞机 2. tail 命令 tail 命令的基本语法是: tail [OPTION]... [FIL…

Day46 动态规划part06

完全背包问题 完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。先遍历物品还是先遍历背包以及遍历顺序 根据递推公式可知:每一个dp需要根据上方和左方的数据推出,只要保证数据左上方数据是递推出来的这种两个for循环的顺序就是可…

【故障诊断】基于EMD的振动信号时频分析新方法研究附matlab代码

matlab % 步骤1:加载振动信号数据 load(‘vibration_signal.mat’); % 加载振动信号数据,假设信号存储在变量signal中 % 步骤2:定义EMD函数 function imfs emd(signal) imfs []; % 存储提取的IMF分量 while ~isMonotonic(signal)[imf, r…

PostgreSQL的内存参数

PostgreSQL的内存参数 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777PostgreSQL 提供了多种内存参数&#x…

一个高效的go语言字符串转驼峰命名算法实现函数

在go语言的开发中我们经常需要对各种命名进行规范&#xff0c; 今天给大家介绍的是一个高效的将字符串转 驼峰命名 &#xff08;即 首字母大写的命名方式&#xff09;的函数。 // 字符串转驼峰命名 // author tekintian <tekintiangmail.com> func CamelStr(str string) …

【python学习】Anaconda的介绍、下载及conda和pip换源方式(切换到国内镜像源)

什么是Anaconda Anaconda 是一个专为数据科学和机器学习预装了多种库的Python发行版。 提供了包管理与环境管理的功能解决了多个版本python并存的问题解决了第三方包安装问题 如何下载Anaconda 官网地址&#xff1a;https://www.anaconda.com/ 点击右上角的 Free Download …

PostgreSQL 和Oracle锁机制对比

PostgreSQL 和Oracle锁机制对比 PostgreSQL 和 Oracle 都是业界广泛使用的关系型数据库管理系统&#xff0c;它们在锁机制方面都有独到的设计来控制并发访问&#xff0c;确保数据的一致性和完整性。下面我们详细比较一下这两个数据库系统的锁机制。 1. 锁类型 PostgreSQL P…

C语言王国——选择与循环(1)

目录 一、引言 二、选择结构 1&#xff0c;if语句 1.1&#xff0c;if...else...语句 1.2&#xff0c;多分支语句 1.3悬空else的问题 2&#xff0c;switch语句 2.1&#xff0c;switch 2.2&#xff0c;break 2.3&#xff0c;default 一、引言 写了几个C语言代码我发现C语…

ReduceTask工作机制

&#xff08;1&#xff09;Copy阶段 ReduceTask从各个MapTask上远程拷贝一片数据&#xff0c;并针对某一片数据&#xff0c;如果其大小超过一定阈值&#xff0c; 则写到磁盘上 &#xff0c;否则直接放到内存中。 &#xff08;2&#xff09;Merge阶段 在远程拷贝数据的同时 &a…

go模拟经典面试题

讲下MySQL事务 &#xff08;1&#xff09;事务的概念 事务就是对数据库执行一系列操作&#xff0c;这些操作要么全部成功执行&#xff0c;要么全部失败&#xff0c;不会存在部分成功的情况。 &#xff08;2&#xff09;事务的ACID特点 原子性&#xff1a;一个事务中的所有操…

def用法 Python:深度解析函数定义与调用的奥秘

def用法 Python&#xff1a;深度解析函数定义与调用的奥秘 在Python的编程世界中&#xff0c;def 关键字如同一座神秘的灯塔&#xff0c;照亮了我们探索函数定义与调用的道路。它不仅是创建函数的起点&#xff0c;更是构建高效、可维护代码的关键所在。本文将通过四个方面、五…

华为坤灵交换机S300, S500, S210,S220, S200, S310 如何WEB抓包

通过S系列交换机配置端口镜像实现抓包 1、应用场景 端口镜像是指将经过指定端口(源端口或者镜像端口)的报文复制一份到另一个指定端口(目的端口或者观察端口)。在网络运营与维护的过程中&#xff0c;为了便于业务监测和故障定位&#xff0c;网络管理员时常要获取设备上的业务报…

FFmpeg中视频 Filters 使用文档介绍

FFmpeg中Filters 简介 FFmpeg是一个强大的多媒体框架,它支持多种音视频编解码器、容器格式、协议等。其中,FFmpeg的Filters(过滤器)是FFmpeg中一个非常强大的功能,它允许用户对音视频数据进行各种处理,包括但不限于视频滤镜、音频效果、视频转换等。 到目前为止,FFmpeg…