檔案操作
dev_get_window (WindowHandle)
* 遍歷資料夾
list_files ('C:/Users/Desktop/halcon deeplearn/Train_images', ['files', 'recursive'], Files)
* 便利資料夾中的影像檔案
list_image_files ('C:/Users/Desktop/halcon deeplearn/Train_images/梨', 'default', [], ImageFiles)
* 篩選bmp及jmp格式的圖片配合list_files運算元使用
tuple_regexp_select(ImageFiles, ['\\.(bmp|jpg)$','ignore_case'], Files)
* 開啟視窗
dev_open_window (0, 0, 512, 512, 'black', WindowHandle1)
* 依次讀取所選圖片並顯示 在視窗中
for Index := 0 to |ImageFiles| - 1 by 1
read_image (Image, ImageFiles[Index])
dev_display(Image)
* 分割檔名 BaseName檔名 Extension檔案字尾 Directory檔案路徑
parse_filename(ImageFiles[Index], BaseName, Extension, Directory)
* 儲存圖片,給出路徑及名稱,新檔名為在原檔名後新增_adj
dump_window(WindowHandle,'bmp',Directory + BaseName + '_adj')
stop ()
endfor
影像讀取
read_image (Image, 'printer_chip/printer_chip_02')
read_image (Image1, ['printer_chip/printer_chip_01', 'printer_chip/printer_chip_05'])
** 選擇物件中目錄 陣列索引從1開始
select_obj (Image1, ObjectSelected, 1)
** 統計物件中目錄數量
count_obj (Image1, Number)
影像增強
概念和分類
影像增強:有目的的強調影像的整體或區域性特性,將原來不清晰的影像變得清晰或強調某些感興趣的特徵,擴大影像中不同特徵之間的差別,抑制不感興趣特徵,改善影像質量,豐富資訊量,滿足分析需要。
影像增強技術基本分為兩類:
1、**空間域法:**包含影像畫素的空間,在空間域中,直接對影像進行各種線性或非線性運算,對影像的畫素灰度做增強處。分為點運算(作用於畫素領域的處理方法,包括灰度變換,直方圖修正,偽彩色增強等)和模板處理(作用於畫素領域的處理方法,包括平滑,影像銳化等)兩大類。
2、**頻域法:**在影像的變換域中把影像看作一種二維訊號,對其進行基於二維傅立葉變換的訊號增強,常用的方法有低通濾波,高通濾波及同態濾波。
灰度變換
灰度變換是根據某種目標條件按一定變換關係逐畫素點改變影像中灰度值的方法,也稱對比度增強或對比度拉伸。常用的灰度變換方法有:線性灰度變換;分段線性灰度變換;非線性灰度變換。
線性變換運算元
反轉影像:
invert_image(image輸入影像:imageinvert輸出影像::)
增強影像對比度:
emphasize(image輸入影像:imageemphasize輸出影像:maskwidth低通掩膜寬,maskheight低通掩膜高,factor對比度強度:)
原理:首先,該過程使用低通(mean_image)進行過濾。由得到的灰度值(mean)和原始灰度值(orig)計算得到的灰度值(res)如下:
透過引數3、4控制均值濾波模板的大小,數值越大,則影像對比度越強,一般配合引數5—Factor(對比度強度)一起對影像進行增強處理。
作用:增強影像的高頻區域(邊緣和拐角),使影像看起來更清晰。
縮放影像的灰度值:
scale_image(image輸入影像:imagescaled縮放後影像:mult比例因子,add補償值:)
1、擴充套件動態範圍:當mult>1時,結果會使影像灰度取值的動態範圍展寬,影像對比度增大,可以改善曝光不足的缺陷,或充分利用影像顯示裝置的動態範圍
2、改變取值空間:當mult=1時,變化後灰度動態範圍不變,灰度取值區間會隨a和c的大小而上下平移,效果是使整個影像更暗或更亮
3、縮小動態範圍:當0<mult<1,則變換後影像動態範圍會變窄,影像對比度變小
4、反轉或取反:當mult<0,則變化後影像的灰度值會反轉,即影像中亮的變暗,暗的變數;當mult=-1時,輸出影像為輸入影像的底片效果
*讀取影像
read_image (Image, 'printer_chip/printer_chip_01')
*關掉視窗
dev_close_window ()
*得到影像尺寸
get_image_size (Image, Width, Height)
*開啟合適大小的視窗
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
*顯示影像
dev_display (Image)
*儲存影像
dump_window (WindowHandle, 'bmp', 'halcon_dump')
*影像取反 255-當前灰度值
invert_image (Image, ImageInvert)
*增加對比度
emphasize (ImageInvert, ImageEmphasize, Width, Height, 1)
*減小對比度
scale_image (ImageInvert, ImageScaled, 0.5, 0)
*增加亮度
scale_image (ImageInvert, ImageScaled1, 1, 100)
*減小亮度
scale_image (ImageInvert, ImageScaled2, 1, -100)
分段線性灰度變換運算元
確定區域內的最小和最大灰度值
min_max_gray(regions需要計算的區域,image輸入的影像::percent低於或高於絕對最大值或最低值的百分比:min最小灰度值,max最大灰度值,range最大最小的差值)
最大灰度值在取值範圍為0到255之間展開
scale_image_max(image輸入影像:imagscalemax增強後影像::)
*讀取影像
read_image (Image, 'printer_chip/printer_chip_01')
*關掉視窗
dev_close_window ()
*得到影像尺寸
get_image_size (Image, Width, Height)
*開啟合適大小的視窗
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
*顯示影像
dev_display (Image)
*得到最大和最小灰度值
min_max_gray (Image, Image, 0, Min, Max, Range)
*擴充套件灰度範圍
scale_image_max (Image, ImageScaleMax)
*儲存影像
write_image (ImageScaleMax, 'bmp', 0, 'C:/Users/Desktop/halcon deeplearn/dddd.bmp')