read_image (Image, 'rice')
illuminate (Image, ImageIlluminate, 101, 101, 0.7)
invert_image (ImageIlluminate, ImageInvert)
set_window_param (3600, 'background_color', 'black')
binary_threshold (ImageInvert, Region, 'max_separability', 'dark', UsedThreshold)
connection (Region, ConnectedRegions)
count_obj (ConnectedRegions, Number)
area_center (ConnectedRegions, Area, Row, Column)
tuple_max (Area, Max)
disp_image (Image, 3600)
i:=1
MaxArea:=Max*0.6
for Index := 1 to Number by 1
select_obj (ConnectedRegions, ObjectSelected, Index)
area_center (ObjectSelected, SmallArea, Row, Column)
if (SmallArea <= MaxArea)
disp_message (3600, i, 'image', Row, Column, 'black', 'false')
i:=i+1
else
opening_circle (ObjectSelected, RegionOpening, 3.5)
erosion_circle (RegionOpening, RegionErosion, 1.5)
connection (RegionErosion, ConnectedRegions1)
count_obj (ConnectedRegions1, Number2)
for Index1 := 1 to Number2 by 1
select_obj (ConnectedRegions1, ObjectSelected1, Index1)
area_center (ObjectSelected1, Area1, Row1, Column1)
disp_message (3600, i, 'image', Row1, Column1, 'black', 'false')
i:=i+1
endfor
endif
stop ()
endfor