【機械視覺】Halcon—【六、交集并集差集和仿射變換】

【機械視覺】Halcon—【六、交集并集差集和仿射變換】

目錄

【機械視覺】Halcon—【六、交集并集差集和仿射變換】

介紹

交集并集差集介紹:

1. 交集(Intersection)

2. 并集(Union)

3. 差集(Difference)

交集并集差集實例

仿射變換

介紹

例子:

旋轉變換例子:

平移、縮放、斜切變換例子

Vector_angle_to_rigid-既可以旋轉-也可以實現平移

多次變換實例


介紹

在圖像處理和計算機視覺領域,交集、并集和差集是基本的集合操作,它們在圖像分析中尤為重要,特別是在圖像分割、特征提取和對象識別等任務中。Halcon(現為MVTEC Vision++)是一個強大的機器視覺軟件,提供了豐富的圖像處理函數,可以用來執行這些集合操作。

交集并集差集介紹:

1. 交集(Intersection)

交集操作是指兩個圖像或圖像區域的重疊部分。在Halcon中,可以使用intersection函數來獲取兩個區域的交集。

示例代碼:

read_image(Image1, 'path_to_image1')read_image(Image2, 'path_to_image2')intersection(Image1, Image2, ImageIntersection)

這里,ImageIntersection將包含Image1Image2的交集部分。

2. 并集(Union)

并集操作是指兩個圖像或圖像區域的合并部分,包括它們重疊的部分。在Halcon中,可以使用union1union2函數來獲取兩個區域的并集。

示例代碼:

read_image(Image1, 'path_to_image1')read_image(Image2, 'path_to_image2')union1(Image1, Image2, ImageUnion)

或者使用union2

union2(Image1, Image2, ImageUnion)

這里,ImageUnion將包含Image1Image2的并集部分。

3. 差集(Difference)

差集操作是指從一個圖像或圖像區域中減去另一個圖像或圖像區域的部分。在Halcon中,可以使用difference函數來獲取差集。

示例代碼:

read_image(Image1, 'path_to_image1')read_image(Image2, 'path_to_image2')difference(Image1, Image2, ImageDifference)

這里,ImageDifference將包含在Image1中但不在Image2中的部分。

交集并集差集實例

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image, 'clip')
threshold (Image, Region, 0, 128)*connection算子是Halcon中用于區域連通性分析的核心算子,它能夠:* 將輸入區域分割成互不連通的獨立區域* 識別并標記圖像中所有的連通組件* 為后續的形狀選擇和特征分析提供基礎
connection (Region, ConnectedRegions)* 合并區域
union1 (ConnectedRegions, RegionUnion)gen_circle (Circle, 200, 200, 100.5)
gen_circle (Circle1, 300, 200, 90.5)* 交集
intersection (Circle, Circle1, RegionIntersection)* 反選
complement (Circle, RegionComplement)* 差集
difference (Circle, Circle1, RegionDifference)dev_clear_window ()
dev_display (RegionComplement)

仿射變換

介紹

在Halcon中,仿射變換是一種常用的圖像處理技術,用于對圖像進行縮放、旋轉、平移、斜切等操作。Halcon是一個強大的機器視覺軟件庫,它提供了豐富的函數來執行各種圖像處理任務,包括仿射變換。

例子:

仿射變換分為三步: 初始化矩陣--->旋轉變換---->應用

* 第一步先創建一個初始化的矩陣(齊次矩陣)
hom_mat2d_identity (HomMat2DIdentity)
* 第二步旋轉變換
* 參數1 原始的矩陣
* 參數2 旋轉的弧度數 rad(90)
* 參數3 變換的中心點
* 參數4 生成的旋轉的變換矩陣
hom_mat2d_rotate (HomMat2DIdentity, rad(30), Row, Column, HomMat2DRotate)* 第三步 旋轉矩陣應用到圖片上
* 參數1 應用到的圖片
* 參數2 輸出圖片
* 參數3 要應用的旋轉矩陣
* 參數4 邊界的處理方式* 'constant' 填充空白區域為灰色的
* 參數5 是否自動適應變換結果* 'false' 輸出圖和輸入圖像尺寸一樣* 'true' 自動調整尺寸以顯示完整的變換結果
affine_trans_image (Image, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')

旋轉變換例子:

* 仿射變換就是在圖形中的變換包括: 平移、縮放、旋轉、斜切(將斜體字導正)
dev_clear_window ()
read_image (Image, 'C:/Users/86152/Desktop/HALCON/一、課件/2025.5.29-/yuanx.jpg')* 獲取圖像中心點
area_center (Image, Area, Row, Column)* 第一步先創建一個初始化的矩陣(齊次矩陣)
hom_mat2d_identity (HomMat2DIdentity)
* 第二步旋轉變換
* 參數1 原始的矩陣
* 參數2 旋轉的弧度數 rad(90)
* 參數3 變換的中心點
* 參數4 生成的旋轉的變換矩陣
hom_mat2d_rotate (HomMat2DIdentity, rad(30), Row, Column, HomMat2DRotate)* 第三步 旋轉矩陣應用到圖片上
* 參數1 應用到的圖片
* 參數2 輸出圖片
* 參數3 要應用的旋轉矩陣
* 參數4 邊界的處理方式* 'constant' 填充空白區域為灰色的
* 參數5 是否自動適應變換結果* 'false' 輸出圖和輸入圖像尺寸一樣* 'true' 自動調整尺寸以顯示完整的變換結果
affine_trans_image (Image, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')

平移、縮放、斜切變換例子

dev_clear_window ()
read_image (Image, 'C:/Users/86152/Desktop/HALCON/一、課件/2025.5.29-/yuanx.jpg')* 1 創建一個初始化矩陣
hom_mat2d_identity (HomMat2DIdentity)* 2 創建一個平移矩陣
* 參數2 豎直方向移動
* 參數3 水平移動
*hom_mat2d_translate (HomMat2DIdentity, 64, 0, HomMat2DTranslate)* 3 應用平移矩陣
*affine_trans_image (Image, ImageAffineTrans, HomMat2DTranslate, 'constant', 'false')* -------------------------------------------
* 縮放變換
* 參數2、3  水平和豎直方向縮放的倍數
* 參數4、5  變換的中心點
*hom_mat2d_scale (HomMat2DIdentity, 2, 2, 0, 0, HomMat2DScale)
*affine_trans_image (Image, ImageAffineTrans1, HomMat2DScale, 'constant', 'false')*-------------------------------------------
* 斜切變換
hom_mat2d_slant (HomMat2DIdentity, rad(20), 'x', 0, 0, HomMat2DSlant)affine_trans_image (Image, ImageAffineTrans, HomMat2DSlant, 'constant', 'false')

Vector_angle_to_rigid-既可以旋轉-也可以實現平移

dev_clear_window ()
read_image (Image, 'C:/Users/86152/Desktop/HALCON/一、課件/2025.5.29-/車牌.png')
* 獲取圖片中心坐標
area_center (Image, Area, Row, Column)
* 獲取角度
orientation_region (Image, Phi)* 求平移或旋轉矩陣
* 參數1、2  起始點的變換中心
* 參數3  原始圖片旋轉角度
* 參數4、5  變換到的位置
* 參數6 變換之后的角度
vector_angle_to_rigid (Row,Column,Phi ,Row ,Column ,rad(190) , HomMat2D)
affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')

多次變換實例

read_image (Image, 'C:/Users/86152/Desktop/HALCON/一、課件/2025.5.29-/三角.png')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)threshold (Image, Region, 128, 255)
connection (Region, ConnectedRegions)
* 合并兩個區域
*union1 (ConnectedRegions, RegionUnion)* 獲取連通區域的中心位置
area_center (Region, Area, Row, Column)
* 如果使用vector_angle_to_rigid算子 需要先獲取初始角
*orientation_region (Region, Phi)* 生成一個初始化矩陣
hom_mat2d_identity (HomMat2DIdentity)
* 先做平移變換
hom_mat2d_translate (HomMat2DIdentity, 200, 100, HomMat2DTranslate)
affine_trans_image (Image, ImageAffineTrans_one, HomMat2DTranslate, 'constant', 'false')
dev_display (ImageAffineTrans_one)* 再次平移
hom_mat2d_translate (HomMat2DIdentity, 0, 270, HomMat2DTranslate1)
affine_trans_image (Image, ImageAffineTrans_two, HomMat2DTranslate1, 'constant', 'false')
dev_display (ImageAffineTrans_two)a:=Row+200
* 在上一次基礎之上再做變換
hom_mat2d_rotate (HomMat2DIdentity, rad(180), 87,350, HomMat2DRotate)
affine_trans_image (ImageAffineTrans_two, ImageAffineTrans_three, HomMat2DRotate, 'constant', 'false')
dev_display (ImageAffineTrans_three)

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83526.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83526.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83526.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實驗設計與分析(第6版,Montgomery)第5章析因設計引導5.7節思考題5.6 R語言解題

本文是實驗設計與分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅玨生譯) 第5章析因設計引導5.7節思考題5.6 R語言解題。主要涉及方差分析&#xff0c;正態假設檢驗&#xff0c;殘差分析&#xff0c;交互作用圖&#xff0c;等值線圖。 dataframe <-data.frame…

劍指offer15_數值的整數次方

數值的整數次方 實現函數 double Power(double base, int exponent) 題目要求 計算 base exponent \text{base}^{\text{exponent}} baseexponent&#xff1a; 不得使用庫函數不需要考慮大數問題&#xff0c;絕對誤差不超過 10 ? 2 10^{-2} 10?2不會出現底數和指數同為 0…

【Typst】1.Typst概述

概述 Typst是一種用于排版文檔的標記語言&#xff0c;可以用于排版各種精美的論文、文章、書籍、報告和作業等。它是LaTex的精神續作&#xff0c;但是運行環境和編譯速度都要更簡單、更快捷。 它設計了一種腳本結合簡單的標記語法實現復雜的排版效果。并且支持模板創建、文件…

[Java惡補day14] 56. 合并區間

以數組 intervals 表示若干個區間的集合&#xff0c;其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間&#xff0c;并返回 一個不重疊的區間數組&#xff0c;該數組需恰好覆蓋輸入中的所有區間 。 示例 1&#xff1a; 輸入&#xff1a;intervals [[1,3…

DiskGenius專業版v6.0.1.1645:分區管理、數據恢復、備份還原,一應俱全!

各位小伙伴&#xff0c;大家好&#xff01;今天阿燦給大家帶來一款超好用的分區工具&#xff0c;DiskGenius專業版。這款工具堪稱電腦管理界的“瑞士軍刀”&#xff0c;功能強大&#xff0c;現在出了新版本v6.0.1.1645&#xff0c;簡繁中文單文件便攜版&#xff0c;使用超方便。…

azure web app創建分步指南系列之二

為注冊表授權托管標識 你創建的托管標識尚未獲得從容器注冊表中提取數據的授權。在此步驟中,你將啟用授權。 返回容器注冊表的管理頁面: 在左側導航菜單中,選擇“訪問控制 (IAM)”。選擇“添加角色分配”。此屏幕截圖顯示了如何為容器注冊表啟用添加角色分配。在角色列表中…

STM32 AD單通道與多通道實戰指南

文章目錄 AD單通道&#xff08;實驗&#xff09;有關配置的庫函數AD單通道部分主要代碼 AD多通道實現多通道采集實現思路探討單次轉換非掃描模式實現AD多通道AD多通道部分代碼 學習建議&#xff1a;推薦搭配 江協科技 AD單通道 AD多通道一起食用&#xff01;&#xff01;&#…

溝通頻率不合適,如何找到平衡點

在團隊協作中&#xff0c;溝通頻率過高、信息干擾、節奏錯位常常導致效率下降與成員倦怠。PMI研究指出&#xff0c;溝通不當是75%項目延誤的根源&#xff0c;其中溝通頻率失衡是關鍵變量之一。要解決這一問題&#xff0c;關鍵在于設定節奏、分層溝通、制定協議。其中&#xff0…

EC2 實例詳解:AWS 的云服務器怎么玩???

彈性計算、靈活計費、全球可用&#xff0c;AWS EC2 全攻略 在 AWS 生態中&#xff0c;有兩個核心服務是非常關鍵的&#xff0c;一個是 S3&#xff08;對象存儲&#xff09;&#xff0c;另一個就是我們今天的主角 —— Amazon EC2&#xff08;Elastic Compute Cloud&#xff09…

lvs-keepalived高可用群集

目錄 1.Keepalived 概述及安裝 1.1 Keepalived 的熱備方式 1.2 keepalived的安裝與服務控制 &#xff08;1&#xff09;安裝keep alived (2)控制 Keepalived 服務DNF 安裝 keepalived 后,執行以下命令將keepalived 服務設置為開機啟動。 2.使用 Keepalived 實現雙機熱備 …

車載診斷架構SOVD --- 車輛發現與建連

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界噪音的通透淡然。 生活中有兩種人,一種人格外在意別人的眼光;另一種人無論…

BUUCTF之[ACTF2020 新生賽]BackupFile

打開環境就一句話 找出源文件! 結合題目名字&#xff1a;BackupFile 先用dirsearct掃描網站文件 發現一個index.php.bak ,拼接url下載 打開發現php代碼 <?php include_once "flag.php";if(isset($_GET[key])) {$key $_GET[key];if(!is_numeric($key)) {exit…

Rag技術----項目博客(六)

RAG 定義&#xff1a;檢索增強生成&#xff08;Retrieval Augmented Generation&#xff09;&#xff0c;簡稱 RAG&#xff0c;已經成為當前最火熱的LLM應用方案。 目的&#xff1a;通過提供相關領域數據庫通過問題檢索信息&#xff0c;將相關信息合并到Prompt中&#xff0c;…

設計模式——外觀設計模式(結構型)

摘要 本文介紹了外觀設計模式&#xff0c;它是一種結構型設計模式&#xff0c;通過引入一個外觀類來封裝復雜子系統的調用細節&#xff0c;對外提供簡單統一的接口。文中通過生活類比、關鍵角色介紹、使用場景分析以及結構說明等方面對這一模式進行了全面闡述&#xff0c;還涉…

LabVIEW磁懸浮軸承傳感器故障識別

針對工業高端裝備中主動磁懸浮軸承&#xff08;AMB&#xff09;的位移傳感器故障檢測需求&#xff0c;基于 LabVIEW 平臺構建了一套高精度故障識別系統。通過集成品牌硬件與 LabVIEW 的信號處理能力&#xff0c;實現了傳感器探頭故障的實時監測與精準定位&#xff0c;解決了傳統…

集成學習三種框架

集成學習通過組合多個弱學習器構建強學習器&#xff0c;常見框架包括Bagging&#xff08;裝袋&#xff09;、Boosting&#xff08;提升&#xff09; 和Stacking&#xff08;堆疊&#xff09; 一、Bagging&#xff08;自助裝袋法&#xff09; 核心思想 從原始數據中通過有放回…

PCI DSS培訓記錄

22日上午: 整體PCI DSS 結構分享VISA分享全球欺詐風險動態 信用卡被偷枚舉攻擊依然是最為主要的安全威脅之一(枚舉驗證碼),增加3DS驗證防護勒索軟件和信息泄漏攻擊欺詐分子對AI技術的興趣日益增加,如換臉軟件過驗證基于NFC技術利用非接交易進行欺詐成為新的攻擊手段,如NF…

數據安全中心是什么?如何做好數據安全管理?

目錄 一、數據安全中心是什么 &#xff08;一&#xff09;數據安全中心的定義 &#xff08;二&#xff09;數據安全中心的功能 1. 數據分類分級 2. 訪問控制 3. 數據加密 4. 安全審計 5. 威脅檢測與響應 二、數據安全管理的重要性 三、如何借助數據安全中心做好數據安…

黑馬Java面試筆記之 微服務篇(業務)

一. 限流 你們項目中有沒有做過限流?怎么做的? 為什么要限流呢? 一是并發的確大(突發流量) 二是防止用戶惡意刷接口 限流的實現方式: Tomcat:可以設置最大連接數 可以通過maxThreads設置最大Tomcat連接數,實現限流,但是適用于單體架構 Nginx:漏桶算法網關,令牌桶算法自定…

PostgreSQL的擴展 passwordcheck

PostgreSQL的擴展 passwordcheck passwordcheck 是 PostgreSQL 內置的一個密碼復雜度檢查擴展&#xff0c;用于強制實施基本的密碼策略。 一、擴展概述 功能&#xff1a;在創建或修改用戶密碼時檢查密碼復雜度目的&#xff1a;防止使用過于簡單的密碼適用版本&#xff1a;Po…