技术标签: 老猿Python 算法 图像处理基础知识 计算机视觉 数学运算图像算法 人工智能 数字图像处理
这阵子把以前写的《数字图像处理》学习总结相关博客看了一遍,以前写一节节的学习和记录,知识的连贯性不好,而现在温习则花的时间少,因此又有不同的感悟,这次主要是把前面内容中涉及到的图像算法做个汇总,好方便速查。
图像加法主要有两种用途,一种是可用于减少甚至消除图像采集中混入的噪声,由于图像各点的采集噪声是互不相关的,且噪声具有零均值的统计特性,因此可以对图像进行多次采集形成多副图像,然后将这多副图像相加再取平均值,就可以实现噪点的消除;另一种是用来做特效,把多幅图像叠加在一起,再进一步进行处理
图像减法操作可以用于增强图像之间的差别,如血管造影照和造影前的血管照相减可以获得造影剂在血管内的分布情况
图像相乘可以用一个模板图像与对应图像相乘从而留下感兴趣的ROI区域,即ROI区域对应的模板区域元素设置为1,其他区域设置为0,再进行图像和模板相乘即可获得ROI区域,也可以一幅图像自乘再归一化处理后增大图像的对比度增大,这是因为自乘后放大了图像中的差异
图像相乘或相除可以用于阴影校正(shading correction),一般是拿一幅图像去除以对应的无图像只有背景的图像,相关案例请参考《《数字图像处理》学习总结及感悟:第二章数字图像基础(5)数学工具》的介绍
反转变换特别适合增强嵌入在一幅图像暗区域中的白色或灰色细节,在黑色在图像范围占主导地位时特别有效。下图左边的原图是一幅带有小块病变的乳房的X光照片,右图是反转变换后的图像,可以看到反转后病变部位更清晰:
对数变换将输入图像中范围较窄的低灰度值映射为了输出图像中范围较宽的灰度值,对数变换可以用于扩展图像中暗像素的值和压缩图像中亮像素的灰度值,同时可以压缩像素值变化比较大的图像的动态范围,即会使得大的图像动态范围变小,下图左边是傅里叶频谱的图像,右边是进行了对数变换的傅里叶频谱图像:
反对数变化将输入图像中范围较宽的高灰度值映射为了输出图像中范围较窄的灰度值。反对数的变换可以用于收缩图像中暗像素的值和扩展图像中亮像素的灰度值
幂律变换又称为伽玛变换,其变换函数为:s=crγ,γ值小于1时,幂律函数本质上就是n次根函数,当变量(底数)小于1时它使得函数结果值比输入变量值变大,底数大于1时使得函数结果值比输入变量值变小,因此γ值小于1时的幂律变换,可以使得较窄范围的暗色像素输入值映射为较广范围的输出值,而对高灰度值则会收窄其输出值范围。γ值大于1时则效果与此相反。而当c和γ都等于1时,幂律变换就是恒等变换(identity transformation)。
幂律变换可以用于显示设备的伽马校正以及暗图像对比度增强、亮图像对比度增强(γ值大于1来压缩灰度级提升对比度),相关案例请参考《《数字图像处理》第三章学习总结感悟1:灰度变换与空间滤波概念及常用灰度变换方法介绍》
分段函数可以用于对比度拉伸、比特平面分层、灰度级分层,相关案例请参考《《数字图像处理》第三章学习总结感悟1:灰度变换与空间滤波概念及常用灰度变换方法介绍》
10.直方图均衡具有扩展输入图像直方图(spread the histogram of the input image)的趋势,均衡后的图像的灰度级(intensity levels)跨越更宽灰度级(intensity scale)范围,最终结果(The net result)是增强了对比度(contrast enhancement),相关原理请参考《温故而知新:直方图均衡、直方图匹配的再次理解》以及《《数字图像处理》第三章学习总结感悟2:直方图处理》的介绍
线性平滑滤波器(Smoothing Linear Filters,也称为均值滤波器或空间均值滤波器)用于降低图像灰度的“尖锐”(sharp)变化(transitions),一个重要应用是为了对感兴趣的物体得到一个粗略的描述(gross representation)而模糊一幅图像,这样,那些较小物体的灰度就与背景混合在一起了,较大物体变得像“斑点”(bloblike)而易于检测,但可能会带来边缘模糊和伪轮廓效应(false contours),相关介绍请参考《数字图像处理:线性和非线性滤波的平滑空间滤波器(Smoothing Spatial Filters)》
中值滤波器的主要功能是使拥有不同于周边像素灰度级的点看起来更接近于它的相邻点,中值滤波器对处理脉冲噪声(impulse noise,也称为椒盐嗓声salt-and-pepper noise)非常有效,因为这种噪声是以黑白点的形式叠加在图像上的,相关案例请参考《数字图像处理:线性和非线性滤波的平滑空间滤波器(Smoothing Spatial Filters)》
最大值滤波器用于搜寻一幅图像中的最亮点,最小值滤波器用于查找最暗点
图像的微分增强就是 对图像求导数,用于边缘(edges)和其他突变(discontinuities,如噪声),而削弱(deemphasizes)灰度变化缓慢(slowly varying intensities)的区域,相关原理请参考《数字图像处理学习–导数运算与锐化空间滤波》
1> 一阶导数就是求图像灰度变化曲线的导数,能够突出图像中的对象边缘;
2>图像的二阶导数产生由零分开(separated by zeros)的双边缘,边缘为一个像素宽(double edge one pixel thick),适合图像锐化处理(锐化处理用来识别图像中的噪声点、线与边缘)
本文将图像处理中常用的数学运算算法及其对图像的作用做了个汇总介绍,有助于图像处理时针对对应场景快速选择合适的数学算法。
更多图像处理请参考专栏《OpenCV-Python图形图像处理》及《图像处理基础知识》的介绍。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《 专栏:Python基础教程目录》从零开始学习Python。
如对文章内容存在疑问或需要相关资料,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询,可通过扫二维码加微信公众号。
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。
文章浏览阅读5.9k次。提示信息被遮盖解决方法 可以给form-item加一个特定的class,不影响其他的提示框,然后设定width,可以把所有内容显示。代码vue的template代码<el-form-item label="用户微信" prop="userWeChat" class="weixinError"> <el-input v-model="userInfo.userWeChat" maxlength="20"></el_el-form-item_error文字过长
文章浏览阅读1.7k次。sqlmap是一个开源的渗透测试工具,它可以自动化检测sql注入漏洞利用sql注入缺陷 接管数据库服务器。_kali安装sqlmap
文章浏览阅读598次,点赞19次,收藏4次。本题来自第六届蓝桥杯省赛C++ B组 /JAVA A组C组《移动距离》_移动距离 蓝桥杯 c++
文章浏览阅读3.4k次。zram disksize 设置小内存项目:1G,2G,3G RAMzram disksize设置.高通:高通的设置比较简单:相关代码:init.qcom.post_boot.shif [ -f /sys/block/zram0/disksize ]; thenif [ -f /sys/block/zram0/use_dedup ]; thenecho 1 > /sys/block/zram0/use_dedupfiif [ $MemTotal -le5242_use_dedup
文章浏览阅读281次。今天中学化学园给大家推荐几款超有趣的教育软件APP,大家可以自行搜索下载,又萌又有趣,在玩乐中还能学到知识!手机要有足够内存哦~~~!下面几款适用于苹果系统~~~1.神奇的化学元素简介:可以高效帮助您记忆有关元素的基本知识。适用对象:初高中学生2.烧杯简介:150多种药剂、300多种神奇的化学反应任你尝试。安全、有趣生动、随时随地做各种化学实验,生动直观,充满乐趣~适用对象:高中学生锂..._化学游戏软件
文章浏览阅读618次。QMA8658A 是一款功能强大的6轴加速度传感器,其内置了3轴加速度计和3轴陀螺仪,能够同时测量三个方向的加速度和角速度。该传感器广泛应用于无人机、机器人、智能手机等领域。为了帮助开发人员快速评估和开发基于QMA8658A的解决方案,我们推出了QMA8658A-EVB全面的评估板。该评估板精心设计,预置了所有必需的硬件接口,兼容I2C和SPI接口,方便与任意MCU处理器进行连接和通信。此外,我们还提供了详细的驱动程序和使用指南,以便开发者能够轻松使用该评估板进行二次开发。4.1 I2C接口。_qmi8658a中文资料
文章浏览阅读733次,点赞3次,收藏8次。Windows命令行下载文件的方法_windows 命令提示符下载网页文件命令
文章浏览阅读1.5k次。渗透测试-安服面试点总结_安服题
文章浏览阅读424次。错误类型判断 在C语言中,常见的错误类型包括语法错误、逻辑错误和运行时错误。逻辑错误是指程序的逻辑错误,导致程序的输出不符合预期。运行时错误是指在程序运行过程中发生的错误,例如除以零、访问不存在的内存等。通过本文的介绍,你已经了解了在C语言项目中打开文件、编辑、运行和测试程序的基本方法,以及常见的错误类型判断和调试技巧。同时,持续学习和实践是提高编程技能的关键,希望本文能为你在C语言编程之路上提供帮助和指导。此外,还将探讨常见的错误类型判断和程序测试方法,帮助你提高代码质量和开发效率。_c语言编辑
文章浏览阅读2.8k次。对于集合的遍历首选方法是for-eachfor(Element e :c){ doSomething(e);}这是1.5版本之后的做法;java1.5之前使用的是Iterator迭代器。为了弄清楚为啥比普通的for循环或者whlie循环好,请看一下代码Iterator i=c.iterator();while(i.hasNext()){_c++中的while循环可有什么替代
文章浏览阅读7.7k次,点赞5次,收藏33次。一、问题为什么要进行网页授权?首先我们进行网页授权的需求是,获取用户信息、最主要是获取openid唯一值,可以用于用户登录、支付等功能,这时候就需要进行网页授权获取用户的信息以及openid。二、静默授权/非静默授权在操作之前可以先提前看看网页授权官方文档静默授权snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid;用来获取进入页面的用户的openid的,并且自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)。非静默授权snsapi_user_微信公众号静默授权
文章浏览阅读235次。A Key Volume Mining Deep Framework for Action Recognition_a key volume mining deep framework for action recognition