*最大类间方差法(OSTU)
dev_close_window ()
dev_clear_window ()
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-18.11-Steady/examples/images/color/citrus_fruits_15.png')
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_display (Image)
get_image_size (Image, Width, Height)
rgb1_to_gray (Image, GrayImage)
*最大方差初始化为0
MaxVariance:=0.0
*最佳分割灰度阈值从1遍历到255,初始阈值的选取可以取图像平均灰度值
for TH := 1 to 255 by 1
dev_display (GrayImage)
*区域分割
threshold (GrayImage, Region3, TH, 255)
*获得前景区域像素个数
area_center (Region3, Area, Row, Column)
*获得前景区域均值和方差
intensity (Region3, GrayImage, Mean, Deviation)
*获得背景区域像素个数,均值和方差
complement (Region3, RegionComplement)
area_center (RegionComplement, Area1, Row1, Column1)
intensity (RegionComplement, GrayImage, Mean1, Deviation1)
*计算类间方差
Ostu:=Area*1.0/[Width*Height]*Area1*1.0/[Width*Height]*pow(Mean-Mean1,2)
*获得最大类间方差的最佳阈值
if(Ostu>MaxVariance)
MaxVariance:=Ostu
BestThreshold:=TH
endif
endfor
*利用得到阈值分割
threshold (GrayImage, Region4, BestThreshold, 255)
dev_display (Region4)