Halcon複習專題 第四章 邊緣

2021-10-10 09:28:25 字數 2610 閱讀 6737

在halcon的例子中,有方法-邊緣提取(畫素精度)

邊緣原理:參考dip課本

區域和輪廓是沒有畫素值的,而影象是有畫素值的,

在邊緣檢測中,有high閾值和low閾值,畫素值高於high時一定是邊緣畫素,低於low一定不是邊緣畫素,若畫素值在high和low之間時,若該畫素值的8鄰域的畫素有乙個高於high,則該畫素就判為邊緣畫素

region區域和xld輪廓只儲存了位置資訊,沒有畫素值資訊

edges_image(image輸入影象,

imaamp輸出邊緣幅度結果影象,

imadir輸出邊緣方向結果影象,

filter邊緣檢測器一般是『canny』,或者是lanser1一階導,lanser2二階導

alpha平滑引數,越大越不平滑

nms,

low閾值,

high)

上述的imaamp和imadir都是影象,即有畫素值,我們用threshold得到的區域或者xld輪廓是沒有畫素值的

注意這裡的輸出都是,即有畫素值

read_image (image, 'fabrik')

// dir表示方向,amp表示幅度

//sobel_dir()可以產生邊緣方向圖和邊緣幅度差分圖

//sobel_amp()只能得到幅度圖

//prewitt()同理

read_image (image, 'fabrik')

sobel_dir(image, edgeamplitude_sbbel_dir, edgedirection_sobel_dir, 'sum_abs', 3)

sobel_amp(image,edgeamplitude_sobel_amp, 'sum_abs', 3)

prewitt_amp (image, imageedgeamp_pre_amp)

prewitt_dir (image, imageedgeamp_pre_dir, imageedgedir_pre_dir)

//非極大值抑制運算元

nonmax_suppression_dir(imgamp, imgdir,imageresult,mode)

nonmax_suppression_amp(imgamp,imageresult,mode)

使用了skeleton骨架,作用就是提取區域骨架,效果就是區域框架更細了,可以通過skeleton轉換成contours輪廓骨架往往是乙個連通域,而輪廓是多個連通域

//提取骨架

skeleton (edges, skeleton)

// 骨架轉換成xld亞畫素輪廓

gen_contours_skeleton_xld (skeleton, contours, 1, 'filter')

dev_display (image)

dev_set_colored (6)

dev_display (contours)

區域無畫素值該方法是基於形態學操作產生的,其中邊界型別包括了外邊界和內邊界,

內邊界=原區域-腐蝕外邊界=膨脹-原區域

boundary(region輸入區域,

regionborder輸出區域邊界,

boundarytype邊界的型別『inner』或『outer』)

c 第四章複習題

8.設計乙個描述魚的結構宣告。結構中應當包括品種 重量 整數,單位為盎司 和長度 英吋 包括小數 答 struct fish 12 假設treacle是乙個包含10個元素的float陣列,請宣告乙個指向treacle的第乙個元素的指標,並使用該指標來顯示陣列的第乙個元素和最後乙個元素。答 float...

系統結構期末複習(第四章)

先行控制結構在指令控制部件中,除了原有的指令分析器外,又增加了先行指令棧,先行讀數棧,先行操作棧和後行寫數棧。其中,先行指令棧的作用是後繼指令預取,先行指令棧是主存與指令分析器之間的緩衝部件,用於平滑主存和指令分析器之間的工作速度。1.線性流水線和非線性流水線的區別在於有無反饋迴路,線性流水線沒有反...

第四章 繼承

一 為什麼要繼承 在物件導向中我們將具有很多重複內容的類中的內容提取出來,寫成乙個單獨的類 其他類只需要繼承就能取得這些功能,同時可以在自己類中寫入獨特的自定義方法 二 繼承語法 inte ce circle nsobject 繼承是在介面中定義的 冒號後的類名是要整合的類,nsobject 是co...