eliminate_min_max(Image : FilteredImage : MaskWidth, MaskHeight, Gap, Mode : )
eliminate_min_max通过用相邻的平均值或局部极小值/最大值替换灰度值来平滑图像。
为了防止边缘和线条被平滑,
只替换那些表示局部极小值或极大值的灰度值(如果图像中有一条线或一条边,则至少有一个相邻像素具有相似的灰度值)。
Gap控制严格的置换:
只有灰度值超过其邻值Gap以上,且小于其邻值Gap以下的像素才被替换。
E(x,y)表示像素在位置(x,y)处的一个NxM大小的矩形邻域,包含邻域内除像素本身外的所有像素;
如果gray_value(x,y) >= Gap + maximum(E(x,y)),则替换;
否则,如果gray_value(x,y) + Gap <= minimum(E(x,y))则替换;
否则采用灰度值(x,y)不变;
Mode 指定在替换时如何执行新值。
Mode = 1——>用下一个较小的局部最大值替换局部最大值,用下一个较大的局部最小值替换局部最小值
Mode = 2——>替换为局部邻域内所有像素的平均值(包括替换后的像素)
Mode = 3——>替换为本地邻域内所有像素的中值(包括替换的像素)
MaskWidth和MaskHeight指定矩形邻域的宽度和高度。
边界处理:
不考虑图像边界外的像素(例如:使用局部3x3掩码,一个像素(0,0)处的邻域缩小为(1,0)、(0,1)和(1,1)处的像素)。
例程:
read_image (Image, 'printer_chip/printer_chip_01')
eliminate_min_max (Image, FilteredImage, 10, 10, 10, 1)
2.eliminate_sp(Image : ImageFillSP : MaskWidth, MaskHeight, MinThresh, MaxThresh : )
eliminate_sp用相邻的平均值替换指定灰度值区间(MinThresh到MaxThresh)之外的所有灰度值。
只有那些也在灰度值区间内的相邻像素才被用于平均。
如果附近没有这样的像素,则使用原始灰度值。
输入图像中灰度值落在灰度值区间内,也采用不改变的灰度值。
例程:
read_image(Image,'mreut')
dev_display(Image)
eliminate_sp(Image,ImageFillSP,3,3,101,201)
dev_display(ImageFillSP)
3.fill_interlace(ImageCamera : ImageFilled : Mode : )
fill_interlace计算一个内插的完整图像或从两个半图像组成的视频图像中删除奇数/偶数行。
如果用摄像机记录一个图像,它由两个在不同时间记录的半幅图像组成,但以数字形式存储在一个图像中。
这可能导致在进一步处理中出现几个错误。为了减少这些误差,对视频图像进行了修改。
每隔一行都要重新计算或删除。
参数Mode 决定是否必须对偶数(“even”、“rmeven”)或奇数(“odd”、“rmodd”)行号执行此操作。
如果您选择“even”或“odd,则生成的行中的灰度值将分别计算为当前像素上方或下方的直接邻居的平均值。
如果您选择“rmeven”或“rmodd”,偶数或奇数行数将被删除(在这种情况下,生成的图像只有输入图像的一半高)。
Mode的值“switch”会导致奇数行和偶数行被交换。
例程:
dev_close_window ()
dev_update_off ()
read_image (Marks, 'marks')
get_image_size (Marks, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
fill_interlace (Marks, ImageRemoved, 'rmodd')
fill_interlace (Marks, ImageFilled, 'odd')
dev_set_part (114, 222, 215, 364)
dev_display (Marks)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
dev_display (ImageFilled)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
dev_display (ImageRemoved)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
dev_set_part (57, 222, 107, 364)
dev_display (ImageRemoved)
|