我在Gitee上建了个仓库,会将学习书本的时候打的一些代码上传上去,笔记中所有代码都在仓库里,初学的朋友可以一起交流哦!地址(Gitee)


第六章 图像增强

图像增强的概念和分类

基本概念:

图像增强:通过某种图像处理方法对退化的某些图像特定特征(如边缘、轮廓、对比度等)进行处理以改变图像的视觉效果。

分类:

空间域法常用增强方法有点运算和模板处理两大类,点运算是作用于单个像素的空间域,包括图像灰度变换、直方图修正、伪色彩增强等技术;模板处理是作用域像素邻域,包括图像平滑、图像锐化等技术。

频域法是在图像的变换域中把图像看作一种二维信号,对其进行基于傅里叶变换的信号增强。比如低通滤波、高通滤波、同态滤波等

灰度变换

灰度变换常用三种方法:线性灰度变换、分段线性灰度变换和非线性灰度变换。

线性灰度变换

常用算子如下

invert_image(Image : ImageInvert : : )

作用:反转图像

emphasize(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : )

作用:增强图像对比度

scale_image(Image : ImageScaled : Mult, Add : )

作用:缩放图像的灰度值

程序如下:

read_image (Image, 'lena')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
stop ()
* 图像取反
invert_image (GrayImage, ImageInvert)
dev_display (ImageInvert)
stop ()
* 增加对比度
emphasize (GrayImage, ImageEmphasize, Width, Height, 1)
dev_display (ImageEmphasize)
stop ()
* 减小对比度
scale_image (GrayImage, ImageScaled, 0.5, 0)
dev_display (ImageScaled)
stop ()
* 提高亮度
scale_image (GrayImage, ImageScaled1, 1, 50)
dev_display (ImageScaled1)
stop ()
* 减小亮度
scale_image (GrayImage, ImageScaled2, 1, -50)
dev_display (ImageScaled2)
stop ()

运行结果如下图

分段线性灰度变换

常用算子如下

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

作用:确定区域内的最小和最大灰度值

scale_image_max(Image : ImageScaleMax : : )

作用:最大灰度值在取值范围为0~255之间展开

程序如下:

read_image (Image, 'lena')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
* 获得最小和最大灰度值
min_max_gray (GrayImage, GrayImage, 0, Min, Max, Range)
* 拓展灰度范围
scale_image_max (GrayImage, ImageScaleMax)
dev_display (ImageScaleMax)
* 获得最小和最大灰度值
min_max_gray (ImageScaleMax, ImageScaleMax, 0, Min1, Max1, Range1)

运行结果如下图

非线性灰度变换

1. 对数变换

用到的算子如下

log_image(Image : LogImage : Base : )

作用:对图像进行对数变换

程序如下:

read_image (Image, 'lena')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
* 对数变换
log_image (GrayImage, LogImage, 'e')
dev_display (LogImage)

运行结果如下图

2.指数变换

用到的算子如下

pow_image(Image : PowImage : Exponent : )

作用:对图像进行指数变换

程序如下:

read_image (Image, 'lena')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
* 指数变换,γ值为0.2
pow_image (GrayImage, PowImage, 0.2)
dev_display (PowImage)
* 指数变换,γ值为1
pow_image (GrayImage, PowImage1, 1)
dev_display (PowImage1)
* 指数变换,γ值为3
pow_image (GrayImage, PowImage2, 3)
dev_display (PowImage2)

程序运行结果如下

直方图处理

直方图性质:

  1. 直方图没有位置信息
  2. 直方图与图像之间为一对多的映射关系
  3. 直方图的可叠加性

直方图均衡化

直方图均衡化是一种最常用的直方图修正方法,它的思想是把原始图像的直方图变换为均匀分布的形式,增加像素灰度值的动态范围。

用到的算子如下

equ_histo_image(Image : ImageEquHisto : : )

作用:直方图均衡化

程序如下:

read_image (Image, 'lena')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
* 直方图均衡化
equ_histo_image (GrayImage, ImageEquHisto)
dev_display (ImageEquHisto)

程序运行结果如下

图像的平滑

图像噪声的分类如下图

图像噪声的特点

  1. 噪声在图像中的分布和大小不规则
  2. 噪声与图像之间具有相关性
  3. 噪声具有叠加性

空域平滑法

  1. 领域平均法
  2. 加权平均法
  3. 多图像平均法

均值滤波处理图像

用到的算子如下

mean_image(Image : ImageMean : MaskWidth, MaskHeight : )

作用:均值滤波

程序如下

read_image (Image, 'monkey')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
dev_display (Image)
* 生成一个高斯噪声分布
gauss_distribution (20, Distribution)
* 添加噪声到图像
add_noise_distribution (Image, ImageNoise, Distribution)
dev_display (ImageNoise)
stop ()
* 对图像进行均值滤波
mean_image (ImageNoise, ImageMean, 5, 5)
dev_display (ImageMean)

程序运行结果如下

中值滤波

中值滤波波是基于排序统计理论的一种能有效抑制噪声的非线性信号平滑处理技术

中值滤波的实现就是选择一定形式的窗口,让它在图像的各点上移动,用窗口内像素灰度值的种植代替床中心点外的像素灰度值。它对于消除孤立点和线段的干扰十分有用,能减弱或消除傅里叶空间的高频分量,但也会影响低频分量。

用到的算子如下

median_image(Image : ImageMedian : MaskType, Radius, Margin : )

作用:中值滤波

程序运行结果如下

频域低通滤波

一幅图像中灰度均匀的平滑区域对应着傅里叶变换中的低频部分,灰度变化频繁的边缘及细节对应着傅里叶变换的高频成分

几种常见低通滤波器

  1. 理想低通滤波器
  2. 巴特沃斯滤波器
  3. 指数低通滤波器
  4. 梯形低通滤波器

用到的算子如下

gen_lowpass( : ImageLowpass : Frequency, Norm, Mode, Width, Height : )

作用:生成理想的低通滤波图像

fft_generic(Image : ImageFFT : Direction, Exponent, Norm, Mode, ResultType : )

作用:快速傅里叶变换

convol_fft(ImageFFT, ImageFilter : ImageConvol : : )

作用:频域里卷积图像

程序如下

read_image (Image, 'monkey')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
dev_display (Image)
* 椒盐噪声
sp_distribution (5, 5, Distribution)
add_noise_distribution (Image, ImageNoise, Distribution)
dev_display (ImageNoise)
stop ()
* 获得低通滤波模型
gen_lowpass (ImageLowpass, 0.1, 'none', 'dc_center', Width, Height)
* 对噪声图做傅里叶变换,获得频率图
fft_generic (ImageNoise, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
*卷积图像
convol_fft (ImageFFT, ImageLowpass, ImageConvol)
*对卷积图做傅里叶反变换
fft_generic (ImageConvol, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'byte')
dev_display (ImageFFT1)
stop ()

程序运行结果如下

图像的锐化

图像模糊的实质是表示目标物的轮廓和细节的高频分量被衰减,因而在频域可以采用高频提升滤波的方式增强图像,图像锐化能加强细节和边缘,但同时也会放大图像噪声

用到的算子如下

sobel_amp(Image : EdgeAmplitude : FilterType, Size : )

作用:利用Sobel算子检测边缘

程序如下

read_image (Image, 'lena')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
* Sobel算子锐化
sobel_amp (GrayImage, EdgeAmplitude, 'sum_abs', 3)
dev_display (EdgeAmplitude)
stop ()
* Sobel的X方向锐化
sobel_amp (GrayImage, EdgeAmplitude1, 'x', 3)
dev_display (EdgeAmplitude1)
stop ()
* Sobel的y方向锐化
sobel_amp (GrayImage, EdgeAmplitude2, 'y', 3)
dev_display (EdgeAmplitude2)
stop ()

程序运行结果如下

高通滤波

几种常用高通滤波器

  1. 理想高通滤波器
  2. 巴特沃斯高通滤波器
  3. 指数高通滤波器
  4. 梯形高通滤波器

用到的算子如下

gen_highpass( : ImageHighpass : Frequency, Norm, Mode, Width, Height : )

作用:生成理想高通滤波图

fft_generic(Image : ImageFFT : Direction, Exponent, Norm, Mode, ResultType : )

作用:快速傅里叶变换

convol_fft(ImageFFT, ImageFilter : ImageConvol : : )

作用:频域里卷积图像

程序如下

read_image (Image, 'monkey')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
dev_display (Image)
* 得到高通滤波模型
gen_highpass (ImageHighpass, 0.1, 'none', 'dc_center', Width, Height)
* 傅里叶变换
fft_generic (Image, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
* 对频率图做高通滤波
convol_fft (ImageFFT, ImageHighpass, ImageConvol)
* 傅里叶反变换
fft_generic (ImageConvol, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'byte')
dev_display (ImageFFT1)
stop ()

程序运行结果如下

图像的彩色增强

伪彩色增强是指将每个灰度级匹配到彩色空间上的一点,将单色图像映射为彩色图像的一种变换

常见的伪彩色增强方法

  1. 密度分割法
  2. 灰度级彩色处理
  3. 频率域滤波法

第六章的笔记就到这里啦,如果你一路看到了这里,帮我点个赞吧O(∩_∩)O~,祝大家学习能有所收获!

最新文章

  1. js,jq新增元素 ,on绑定事件无效
  2. TraceView进行性能分析
  3. BZOJ4446: [Scoi2015]小凸玩密室
  4. 【Map】获取字符串中,每一个字母出现的次数
  5. javascript中parentNode,childNodes,children的应用详解
  6. 如何实现Android 中断线程的处理
  7. 重构12-Break Dependencies(打破依赖)
  8. IE浏览器打开 「兼容性视图」
  9. 【转载】Android Studio 设置内存大小及原理
  10. Cs Round#54 E Late Edges
  11. 微信小程序之实现页面缩放式侧滑效果
  12. NGUI-实例化问题
  13. mod_fcgid: HTTP request length 136136 (so far) exceeds MaxRequestLen (131072)
  14. Android虚拟机与Java虚拟机 两种虚拟机的比较
  15. 最完整Android Studio插件整理 (转)
  16. maven国内aliyun镜像
  17. vscode对Vue文件的html部分格式化失效问题解决办法
  18. SDOI2018游记
  19. Error creating bean with name xxxx,xxxx must be provided
  20. 2668: [cqoi2012]交换棋子

热门文章

  1. java中对象属性可以是另外一个对象或对象的参考
  2. jQuery实现数字时钟
  3. Vulnhub 之 Earth
  4. Jenkins 从小白入门到企业实践打怪放弃之路系列笔记 【持续集成与交付快速入门必备】
  5. 史上最全log4j2远程命令执行漏洞汇总报告
  6. A标签上使用onclick事件,js函数响应成功,单会刷新当前页面陷阱
  7. .NET Core企业微信网页授权登录
  8. jmeter元件,作用域与优先级
  9. Go学习-基本语法(一)
  10. 论文解读(Graphormer)《Do Transformers Really Perform Bad for Graph Representation?》