《HALCON數字圖像處理》第六章筆記


我在Gitee上建了個倉庫,會將學習書本的時候打的一些代碼上傳上去,筆記中所有代碼都在倉庫里,初學的朋友可以一起交流哦!地址(Gitee)


第六章 圖像增強

圖像增強的概念和分類

基本概念:
圖像增強:通過某種圖像處理方法對退化的某些圖像特定特征(如邊緣、輪廓、對比度等)進行處理以改變圖像的視覺效果。

分類:
image

空間域法常用增強方法有點運算和模板處理兩大類,點運算是作用於單個像素的空間域,包括圖像灰度變換、直方圖修正、偽色彩增強等技術;模板處理是作用域像素鄰域,包括圖像平滑、圖像銳化等技術。
頻域法是在圖像的變換域中把圖像看作一種二維信號,對其進行基於傅里葉變換的信號增強。比如低通濾波、高通濾波、同態濾波等

灰度變換

灰度變換常用三種方法:線性灰度變換、分段線性灰度變換和非線性灰度變換。

線性灰度變換

常用算子如下
invert_image(Image : ImageInvert : : )
作用:反轉圖像

emphasize(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : )
作用:增強圖像對比度

scale_image(Image : ImageScaled : Mult, Add : )
作用:縮放圖像的灰度值

程序如下:

read_image (Image, 'lena')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
stop ()
* 圖像取反
invert_image (GrayImage, ImageInvert)
dev_display (ImageInvert)
stop ()
* 增加對比度
emphasize (GrayImage, ImageEmphasize, Width, Height, 1)
dev_display (ImageEmphasize)
stop ()
* 減小對比度
scale_image (GrayImage, ImageScaled, 0.5, 0)
dev_display (ImageScaled)
stop ()
* 提高亮度
scale_image (GrayImage, ImageScaled1, 1, 50)
dev_display (ImageScaled1)
stop ()
* 減小亮度
scale_image (GrayImage, ImageScaled2, 1, -50)
dev_display (ImageScaled2)
stop ()

運行結果如下圖
image

分段線性灰度變換

常用算子如下
min_max_gray(Regions, Image : : Percent : Min, Max, Range)
作用:確定區域內的最小和最大灰度值

scale_image_max(Image : ImageScaleMax : : )
作用:最大灰度值在取值范圍為0~255之間展開

程序如下:

read_image (Image, 'lena')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
* 獲得最小和最大灰度值
min_max_gray (GrayImage, GrayImage, 0, Min, Max, Range)
* 拓展灰度范圍
scale_image_max (GrayImage, ImageScaleMax)
dev_display (ImageScaleMax)
* 獲得最小和最大灰度值
min_max_gray (ImageScaleMax, ImageScaleMax, 0, Min1, Max1, Range1)

運行結果如下圖

image

非線性灰度變換

1. 對數變換

用到的算子如下

log_image(Image : LogImage : Base : )
作用:對圖像進行對數變換

程序如下:

read_image (Image, 'lena')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
* 對數變換
log_image (GrayImage, LogImage, 'e')
dev_display (LogImage)

運行結果如下圖

image

2.指數變換

用到的算子如下

pow_image(Image : PowImage : Exponent : )
作用:對圖像進行指數變換

程序如下:

read_image (Image, 'lena')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
* 指數變換,γ值為0.2
pow_image (GrayImage, PowImage, 0.2)
dev_display (PowImage)
* 指數變換,γ值為1
pow_image (GrayImage, PowImage1, 1)
dev_display (PowImage1)
* 指數變換,γ值為3
pow_image (GrayImage, PowImage2, 3)
dev_display (PowImage2)

程序運行結果如下

image

直方圖處理

直方圖性質:

  1. 直方圖沒有位置信息
  2. 直方圖與圖像之間為一對多的映射關系
  3. 直方圖的可疊加性

直方圖均衡化

直方圖均衡化是一種最常用的直方圖修正方法,它的思想是把原始圖像的直方圖變換為均勻分布的形式,增加像素灰度值的動態范圍。

用到的算子如下

equ_histo_image(Image : ImageEquHisto : : )
作用:直方圖均衡化

程序如下:

read_image (Image, 'lena')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
* 直方圖均衡化
equ_histo_image (GrayImage, ImageEquHisto)
dev_display (ImageEquHisto)

程序運行結果如下

image

圖像的平滑

圖像噪聲的分類如下圖

image

圖像噪聲的特點

  1. 噪聲在圖像中的分布和大小不規則
  2. 噪聲與圖像之間具有相關性
  3. 噪聲具有疊加性

空域平滑法

  1. 領域平均法
  2. 加權平均法
  3. 多圖像平均法

均值濾波處理圖像

用到的算子如下

mean_image(Image : ImageMean : MaskWidth, MaskHeight : )
作用:均值濾波

程序如下

read_image (Image, 'monkey')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
dev_display (Image)
* 生成一個高斯噪聲分布
gauss_distribution (20, Distribution)
* 添加噪聲到圖像
add_noise_distribution (Image, ImageNoise, Distribution)
dev_display (ImageNoise)
stop ()
* 對圖像進行均值濾波
mean_image (ImageNoise, ImageMean, 5, 5)
dev_display (ImageMean)

程序運行結果如下
image

中值濾波

中值濾波波是基於排序統計理論的一種能有效抑制噪聲的非線性信號平滑處理技術

中值濾波的實現就是選擇一定形式的窗口,讓它在圖像的各點上移動,用窗口內像素灰度值的種植代替床中心點外的像素灰度值。它對於消除孤立點和線段的干擾十分有用,能減弱或消除傅里葉空間的高頻分量,但也會影響低頻分量。

用到的算子如下

median_image(Image : ImageMedian : MaskType, Radius, Margin : )
作用:中值濾波

程序運行結果如下

image

頻域低通濾波

一幅圖像中灰度均勻的平滑區域對應着傅里葉變換中的低頻部分,灰度變化頻繁的邊緣及細節對應着傅里葉變換的高頻成分

幾種常見低通濾波器

  1. 理想低通濾波器
  2. 巴特沃斯濾波器
  3. 指數低通濾波器
  4. 梯形低通濾波器

用到的算子如下

gen_lowpass( : ImageLowpass : Frequency, Norm, Mode, Width, Height : )
作用:生成理想的低通濾波圖像

fft_generic(Image : ImageFFT : Direction, Exponent, Norm, Mode, ResultType : )
作用:快速傅里葉變換

convol_fft(ImageFFT, ImageFilter : ImageConvol : : )
作用:頻域里卷積圖像

程序如下

read_image (Image, 'monkey')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
dev_display (Image)
* 椒鹽噪聲
sp_distribution (5, 5, Distribution)
add_noise_distribution (Image, ImageNoise, Distribution)
dev_display (ImageNoise)
stop ()
* 獲得低通濾波模型
gen_lowpass (ImageLowpass, 0.1, 'none', 'dc_center', Width, Height)
* 對噪聲圖做傅里葉變換,獲得頻率圖
fft_generic (ImageNoise, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
*卷積圖像
convol_fft (ImageFFT, ImageLowpass, ImageConvol)
*對卷積圖做傅里葉反變換
fft_generic (ImageConvol, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'byte')
dev_display (ImageFFT1)
stop ()

程序運行結果如下

image

圖像的銳化

圖像模糊的實質是表示目標物的輪廓和細節的高頻分量被衰減,因而在頻域可以采用高頻提升濾波的方式增強圖像,圖像銳化能加強細節和邊緣,但同時也會放大圖像噪聲

用到的算子如下

sobel_amp(Image : EdgeAmplitude : FilterType, Size : )
作用:利用Sobel算子檢測邊緣

程序如下

read_image (Image, 'lena')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
* Sobel算子銳化
sobel_amp (GrayImage, EdgeAmplitude, 'sum_abs', 3)
dev_display (EdgeAmplitude)
stop ()
* Sobel的X方向銳化
sobel_amp (GrayImage, EdgeAmplitude1, 'x', 3)
dev_display (EdgeAmplitude1)
stop ()
* Sobel的y方向銳化
sobel_amp (GrayImage, EdgeAmplitude2, 'y', 3)
dev_display (EdgeAmplitude2)
stop ()

程序運行結果如下

image

高通濾波

幾種常用高通濾波器

  1. 理想高通濾波器
  2. 巴特沃斯高通濾波器
  3. 指數高通濾波器
  4. 梯形高通濾波器

用到的算子如下

gen_highpass( : ImageHighpass : Frequency, Norm, Mode, Width, Height : )
作用:生成理想高通濾波圖

fft_generic(Image : ImageFFT : Direction, Exponent, Norm, Mode, ResultType : )
作用:快速傅里葉變換

convol_fft(ImageFFT, ImageFilter : ImageConvol : : )
作用:頻域里卷積圖像

程序如下

read_image (Image, 'monkey')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
dev_display (Image)
* 得到高通濾波模型
gen_highpass (ImageHighpass, 0.1, 'none', 'dc_center', Width, Height)
* 傅里葉變換
fft_generic (Image, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
* 對頻率圖做高通濾波
convol_fft (ImageFFT, ImageHighpass, ImageConvol)
* 傅里葉反變換
fft_generic (ImageConvol, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'byte')
dev_display (ImageFFT1)
stop ()

程序運行結果如下

image

圖像的彩色增強

偽彩色增強是指將每個灰度級匹配到彩色空間上的一點,將單色圖像映射為彩色圖像的一種變換

常見的偽彩色增強方法

  1. 密度分割法
  2. 灰度級彩色處理
  3. 頻率域濾波法

第六章的筆記就到這里啦,如果你一路看到了這里,幫我點個贊吧O(∩_∩)O~,祝大家學習能有所收獲!😀


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM