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.pswp.cn/bicheng/20960.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20960.shtml
英文地址,請注明出處:http://en.pswp.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…