21、图像的点运算

点运算能让用户改变图像数据占据的灰度范围,一幅输入图像经过点运算后将产生一幅新的输出图像,由输入像素点的灰度值决定输出图像像素点的灰度值。点运算可以按照预定的方式改变一幅图像的灰度直方图。

  1. 灰度直方图

灰度直方图是数字图像处理中一个简单、最有用的工具,它描述了一幅图像的灰度级内容,任何一幅图像的直方图都包括了可视的信息。灰度直方图是灰度值得函数,描述的是图像中具有该灰度值像素的个数,其横坐标表示像素的灰度值,纵坐标表示该灰度出现的频率(个数)。

1、gray_histo(Regions, Image : : : AbsoluteHisto, RelativeHisto)

    功能:计算区域内的灰度值分布(灰度直方图)

    Regions:要计算的区域(假如要计算整张图像,也可以输入直接输入该Image对象)

    Image:输入图像

    AbsoluteHisto:一个数组(下标是0~255表示灰度值)取值为下标灰度值所对应的像素个数。

    RelativeHisto:一个数组(下标是0~255表示灰度值)取值为下标灰度值所对应相对频率(像素个数除以区域面积)

2、gen_region_histo( : Region : Histogram, Row, Column, Scale : )

    功能:根据1中产生的数组(AbsoluteHistoRelativeHisto效果都一样)绘制一个region区域图。

    Row, Column,:区域的中心坐标

3、histo_to_thresh( : : Histogramm, Sigma : MinThresh, MaxThresh)

    Histogramm:输入1中产生的数组(AbsoluteHistoRelativeHisto效果都一样)

    Sigma:直方图高斯平滑系数,系数越大,平滑效果越好,得到的区域就越少(关于这个参数的解析参考日志《5、图像分割(阈值)》)

    MinThresh, MaxThresh:根据平滑后灰度直方图,在波谷的位置把图像分割,这两个参数用来存放分割的阈值,是

                        一个数组。

例子:

read_image (Image, 'clip')

gray_histo (Image, Image, AbsoluteHisto, RelativeHisto)

*绘制灰度直方图

gen_region_histo (Region, AbsoluteHisto, 300, 300, 1)

*利用平滑系数修改灰度直方图,把原图像分割为若干部分

histo_to_thresh (AbsoluteHisto, 5, MinThresh, MaxThresh)

threshold (Image, Region1,MinThresh, MaxThresh)

    利用平滑系数修改灰度直方图,把原图像分割为若干部分中也可以用日志《5、图像分割(阈值)》中的办法来代

    替,即把最后两行修改为:auto_threshold (Image, Regions, 5)

二、增强图像对比度的两种常用方法

图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。直方图拉伸直方图均衡化是两种最常见的间接对比度增强方法。直方图拉伸是通过对比度拉伸对直方图进行调整,从而"扩大"前景和背景灰度的差别,以达到增强对比度的目的,这种方法可以利用线性或非线性的方法来实现;直方图均衡化则通过使用累积函数对灰度值进行"调整"以实现对比度的增强。直方图均衡化的英文名称是Histogram Equalization.直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。

 

拉伸方法来增强对比度

1、min_max_gray(Regions, Image : : Percent : Min, Max, Range)

    功能:计算图像指定区域内的最大像素值和最小像素值

    Regions:输入要指定的region(也可以输入直接输入Image对象)

    Percent:默认0,

    Min, Max:最大像素值和最小像素值

    Range:有像素值得下标的个数

2、scale_image(Image : ImageScaled : Mult, Add : )

    功能:对原图像灰度值进行线性变换。

    公式: G' = G * Mult + Add

3、scale_image_max(Image : ImageScaleMax : : )

    功能:把图像灰度值拉伸到0~255

    作用:增强对比度

    例子:

read_image (Image, 'clip')

 

*拉伸前获取一下图像的最大值和最小值以及统计一下直方图信息

gray_histo (Image, Image, AbsoluteHisto1, RelativeHisto1)

min_max_gray (Image, Image, 0, Min, Max, Range)

 

*拉伸图像

scale_image_max (Image, ImageScaleMax)//变换后对比度增强

 

*拉伸后获取一下图像的最大值和最小值以及统计一下直方图信息

gray_histo (ImageScaleMax, ImageScaleMax, AbsoluteHisto2, RelativeHisto2)

min_max_gray (ImageScaleMax, ImageScaleMax, 0, Min1, Max1, Range1)

直方图均衡化来增强对比度

1、equ_histo_image(Image : ImageEquHisto : : )

    

    例子:

read_image (Image, 'clip')

equ_histo_image (Image, ImageEquHisto)

三、图像的加减乘除

1、add_image(Image1, Image2 : ImageResult : Mult, Add : )

    功能:图像加法g' := (g1 + g2) * Mult + Add

2、sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )

    功能:图像减法g' := (g1 - g2) * Mult + Add

3、div_image(Image1, Image2 : ImageResult : Mult, Add : )

    功能:图像除法g' := g1 / g2 * Mult + Add

4、mult_image(Image1, Image2 : ImageResult : Mult, Add : )

    功能:图像乘法g' := g1 * g2 * Mult + Add

四、图像绝对差异处理

1、abs_diff_image(Image1, Image2 : ImageAbsDiff : Mult : )

    功能:计算两幅图像的绝对差异g' = |(g1 - g2)| * Mult

五、图像最大值和最小值处理

1、max_image(Image1, Image2 : ImageMax : : )

    功能:逐个对比两幅图像中的每一个像素,把像素值大的作为结果图像的灰度值。

read_image(Image0,'fabrik')

dev_display (Image0)

read_image(Image1,'monkey')

dev_display (Image1)

max_image (Image0, Image1, ImageMax)

2、min_image(Image1, Image2 : ImageMin : : )

    功能:逐个对比两幅图像中的每一个像素,把像素值小的作为结果图像的灰度值。

    read_image(Image0,'fabrik')

dev_display (Image0)

read_image(Image1,'monkey')

dev_display (Image1)

min_image (Image0, Image1, ImageMin)

posted @ 2022-05-08 23:08  ihh2021  阅读(889)  评论(0)    收藏  举报