以lena为实验对象。查看处理后的图像与灰度直方图变化
原图
灰度值缩放
//缩放图像的灰度值, g' := g * Mult + Add
scale_image(Image : ImageScaled : Mult, Add : )
//最大灰度扩展值,取值范围是0 ~ 255。这个不用设置参数
scale_image_max (GrayImage, ImageScaleMax)
//将图像的灰度值从区间[Min,Max]缩放,下面参数设置的就是(100,150)->(20,200)缩放
//这个算子可以自定义区间,以及缩放后的图像范围区间,所有其他灰度值将被剪切
scale_image_range (GrayImage, ImageScaled1, [100,20], [150,200])
//灰度值翻转, g' = 255 - g
invert_image (GrayImage, ImageInvert)
scale_image****
(Image : ImageScaled : Mult, Add : )
作用: 拉开图像的对比度,让图像中黑的地方更黑,亮的地方更亮。
可以通过灰度范围[GMin,GMax],然后用以下公式来确定参数
g’ := g * Mult + Add
- scale_image (GrayImage, ImageScaled, 1.5, 0)
scale_image_max
(Image, ImageScaleMax)
作用: 最大灰度扩展值,取值范围是0 ~ 255。
- scale_image_max (GrayImage, ImageScaleMax)
scale_image_range
(Image : ImageScaled : Min, Max : )
作用: 将图像的灰度值从区间[Min,Max]缩放,下面参数设置的就是(100,150)->(20,200)缩放。 这个算子可以自定义区间,以及缩放后的图像范围区间,所有其他灰度值将被剪切。
- scale_image_range (GrayImage, ImageScaled1, [100,20], [150,200])
灰度值计算
//灰度值翻转, g' = 255 - g
invert_image (GrayImage, ImageInvert)
//将两幅图像相乘。 g' := g1 * g2 * Mult + Add
mult_image (GrayImage, GrayImage, ImageResult, 0.01, 0)
//两幅图像相除。 g' := g1 / g2 * Mult + Add
div_image (GrayImage, ImageScaled1, ImageResult2, 255, 0)
//两幅图像相加 g' := (g1 + g2) * Mult + Add
add_image (GrayImage, GrayImage, ImageResult1, 1, 0)
//两幅图像相减 g' := (g1 - g2) * Mult + Add
sub_image (GrayImage, GrayImage, ImageSub, 1, 128)
//计算图像的对数
log_image (GrayImage, LogImage, 'e')
//计算图像的指数。
exp_image (GrayImage, ExpImage, 'e')
//幂指数操作
pow_image (GrayImage, PowImage, 2)
//平方根操作
sqrt_image (PowImage, SqrtImage)
invert_image
(Image : ImageInvert : : )
作用:灰度值翻转,
g’ = 255 - g
- invert_image (GrayImage, ImageInvert)
mult_image
(Image1, Image2 : ImageResult : Mult, Add : )
作用: 将两幅图像相乘。
g’ := g1 * g2 * Mult + Add
div_image
(Image1, Image2 : ImageResult : Mult, Add : )
作用: 将两幅图像相除。
g’ := g1 / g2 * Mult + Add
add_image
(Image1, Image2 : ImageResult : Mult, Add : )
作用: 将两幅图像相加。
g’ := (g1 + g2) * Mult + Add
sub_image
(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )
作用: 将两幅图像相减。
g’ := (g1 - g2) * Mult + Add
log_image
(Image : LogImage : Base : )
作用: 可以扩张数值较小的灰度范围或者压缩数值较大的灰度范围。
对图像的灰度值取对数,得到新的灰度值,用于提高暗部像素值 。第3个参数为对数的底,默认值为’e’。
g’ = ln(g+1)
- log_image (GrayImage, LogImage, ‘e’)
exp_image
(Image : ExpImage : Base : )
作用: 计算图像的指数,用于提高亮部像素值 。
g’=g的e次幂
- exp_image (GrayImage, ExpImage, ‘e’)
pow_image
(Image : PowImage : Exponent : )
作用: 对图像做指数变换 。
sqrt_image
(Image : SqrtImage : : )
作用: 计算输入图像image的平方根。
增强对比度与照明度
emphasize
(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : )
作用: 增强图像的高频区域(边缘和拐角),使图像看起来更清晰。
使用低通(平均图像)进行滤波。根据获得的灰度值(平均值)和原始灰度值(原始值)计算得到的灰度值(res)。
res := round((orig - mean) * Factor) + orig
通过参数3、4控制均值滤波模板的大小,数值越大,则图像对比度越强,配合Factor(对比度强度)一起对图像进行增强处理。
- emphasize (GrayImage, ImageEmphasize, 7, 7, 1)
illuminate
(Image : ImageIlluminate : MaskWidth, MaskHeight, Factor : )
- illuminate (GrayImage, ImageIlluminate, 101, 101, 0.7)
直方图均衡化
equ_histo_image
(Image : ImageEquHisto : : )
作用: 直方图均衡就是从图像的灰度图入手,建立一个0~255灰度值的直方图,统计每个灰度值在直方图中出现的次数,将灰度图中对应点的灰度值记录在直方图中,接着对该直方图进行均衡化操作,使像素的灰度值分布得更加均匀,从而增强图像整体对比度效果,使图像更加清晰。
- equ_histo_image (GrayImage, ImageEquHisto)
锐化边缘
shock_filter (参考)
(Image : SharpenedImage : Theta, Iterations, Mode, Sigma : )
Theta:即Δt Iterations:迭代次数 Mode:可选canny或laplacian, 二维微分算子 Sigma:平滑参数,为了使边缘提的更鲁棒,Sigma是高斯平滑的标准差
作用: 对输入图像应用一个冲击过滤器来锐化图像中包含的边缘,将扩散的边缘,变为阶梯式强的不连续边缘
1、首先定义最大-最小影响区域: 最大影响区域是二阶偏微分为负数的区域,最小影响区域二阶偏微分为正数的区域。
2、一个区段即最大和最小影响区域组成的区段,shock_filter使此区域内是分段常数的,即下图实线:
- shock_filter (GrayImage, SharpenedImage, 0.5, 10, ‘canny’, 1)
灰度图像形态学
gray_erosion_rect
(Image : ImageMin : MaskHeight, MaskWidth : )
作用: 灰度腐蚀
gray_dilation_rect
(Image : ImageMax : MaskHeight, MaskWidth : )
作用: 灰度膨胀
gray_range_rect
(Image : ImageResult : MaskHeight, MaskWidth : )
作用: 用一个矩形结构元素在图像中滑动,新值 =(矩形中最大的灰度值)-(矩形中最小的灰度值)
gray_opening
(Image, SE : ImageOpening : : )
作用: 灰度开运算,先腐蚀后膨胀
gray_closing
(Image, SE : ImageClosing : : )
作用: 灰度闭运算,先膨胀后腐蚀
其它
mean_curvature_flow
(Image : ImageMCF : Sigma, Theta, Iterations : )
作用: 既可以实现高斯滤波去噪功能,同时可以保持图像梯度边缘的锐利。效果类似双边滤波。
coherence_enhancing_diff
(Image : ImageCED : Sigma, Rho, Theta, Iterations : )
作用: 对于纹理比较明显的情况,可以增强纹理;当类似纹理缺陷或者纹理很淡的时候,好像没什么用处。
针对指纹类图像比较有效果。
lena图片处理灰度图和原图差不多。
几种滤波方法
中值、均值、高斯等滤波方法。
总结:
处理图如下:
素材:
另外,log_image、exp_image、pow_image、sqrt_image会把图像由byte型变成real型。