图像的平滑与锐化代码matlab_【图像处理】轻松搞懂图像锐化
图像锐化的目的是使模糊图像变清晰,方法可以大致分为两类:微分法、高频加重滤波法。其中微分法可以分为梯度法、Sobel算子法、Laplace算子法。
在做图像锐化时要注意,处理的图像必须有较高的信噪比,否则锐化会使噪声收到比信号还强的增强,一般先降噪后锐化。
微分法
微分运算是求信号的变化率,加强高频分量,使图像轮廓清晰。希望通过导数运算使边缘和轮廓变清晰,这就要求该导数运算是各向同性的(旋转不变性),可以证明偏导数的平方和运算具有此性质。
- 梯度法
对于图像
梯度的幅度表示为
对于数字图像而言,
该式可以简化成
图像的最后一行(列)的梯度无法求得,一般用前一行(列)的梯度代替。
当梯度计算完之后,可以根据需要生成不同的梯度增强图像,
1)第一种,
2)第二种,
可以显示出非常明显的边缘轮廓,又不会破坏原灰度变化平缓的背景。
3)第三种,
边缘轮廓用固定的灰度级
4)第四种,
背景用固定灰度级
5)第五种,
将背景和边缘用二值图像表示,便于研究边缘所在位置。
2. Sobel算子
采用梯度微分锐化图像,会让噪声、条纹得到增强,Sobel算子在一定程度上解决了这个问题,
从这个式子中,可以得到两个性质,
- Sobel引入了平均的因素,因此对噪声有一定的平滑作用
- Sobel算子的操作就是相隔两个行(列)的差分,所以边缘两侧元素的得到了增强,因此边缘显得粗而亮。
Sobel算子表示形式为:
3. 拉普拉斯算子(二阶微分)
拉普拉斯运算也是各向同性的线性运算。拉普拉斯算子为:
由此式可知,数字图像在
拉普拉斯算子的模板图可表示为:
还有其他的常用拉普拉斯模板:
高通滤波
高通滤波法采用高通滤波器让高频分量通过,使图像的边缘和线条变得清楚,实现锐化。
高通滤波器而用空域法和频域法实现,在空间域使用卷积方法,模板如
可以看出和拉普拉斯算子基本相同。
个人理解:为了能够让高频通过,
代码
Sobel算子
import cv2
import matplotlib.pyplot as pltplt.subplot(1, 2, 1)
img = cv2.imread("image.jpg", 0) # 0为灰度图
plt.imshow(img)plt.subplot(1, 2, 2)
depth = cv2.CV_16S
#求X方向梯度(创建grad_x, grad_y矩阵)
grad_x = cv2.Sobel( img, depth, 1, 0 )
abs_grad_x = cv2.convertScaleAbs( grad_x )#求Y方向梯度
grad_y = cv2.Sobel( img, depth, 0, 1 )
abs_grad_y = cv2.convertScaleAbs( grad_y )#合并梯度
sobel_img = cv2.addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0 )plt.imshow(sobel_img)
plt.show()
Laplace算子
import cv2
import matplotlib.pyplot as pltplt.subplot(1, 2, 1)
img = cv2.imread("image.jpg", 0) # 0为灰度图
plt.imshow(img)plt.subplot(1, 2, 2)
depth = cv2.CV_16S
kernel_size = (3, 3) # 模板大小
scale = 1 # 扩散系数
laplace_img = cv2.Laplacian(img, depth, kernel_size, scale=scale)plt.imshow(laplace_img)
plt.show()
图像的平滑与锐化代码matlab_【图像处理】轻松搞懂图像锐化相关推荐
- 10行代码让你轻松搞定对象检测
摘要: 十行代码轻松搞定对象检测?快来看看如何使用ImageAI. 计算机视觉是人工智能领域中最重要的一个分支.计算机视觉是一门能够识别和理解图像及其场景的计算机软件系统的科学.计算机视觉包括图像识 ...
- 免费报表工具零代码零基础轻松搞定 web 报表
话说,能制作清单式报表的方式有千千万: 骨灰级的 Excel 控,如果能轻车熟路驾驭 VBA,也能玩出各种花来,再不济借助图表插件外援也能秒杀一众小白选手: 传说中的编程控,只要需求明确没什么做不了的 ...
- bmp转换tiff c++代码_如何用Java语言将图像转换为PDF?Spire.PDF for Java轻松搞定
对于开发人员,在日常工作中经常也会处理许多文档格式,将图像转换为PDF也是常有的事.那么,在Java语言开发中,如何将图像转换为PDF呢? Spire.PDF for Java支持将多种图像格式(例如 ...
- python包裹和运费_这个Python库真的太好用了,10行代码就能轻松搞定目标检测
目标检测是指计算机和软件系统对图像或场景中的目标进行定位和识别的任务. 目标检测已广泛应用于人脸检测.车辆检测.人流量统计.网络图像.安防系统和无人驾驶等多个领域. 早期目标检测的实现基于经典算法,比 ...
- 一文搞懂图像二值化算法
传统的机器视觉通常包括两个步骤:预处理和物体检测.而沟通二者的桥梁则是图像分割(Image Segmentation)[1].图像分割通过简化或改变图像的表示形式,使得图像更易于分析. 举个例子,食品 ...
- 用思维导图分析代码(arduino用WEB网页-输入WIFI名与密码 )让初学者轻松搞懂程序的运作流程。
学习和使用ESP8266,在ardoinoIDE写程序一个多月了. 刚开始看代码时,由于水平比较低, 分析代码比较难, 所以,在一边学习时,一边用思维导图去分析代码. 分析完,感觉思路有些清晰, 希望 ...
- 【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解
本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑.高斯 ...
- MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化
本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑.高斯 ...
- OpenCV如何进行图像的平滑和锐化处理?
OpenCV提供了一些函数来对图像进行平滑和锐化处理.下面是一些常用的函数和示例: 平滑处理 cv::blur: 通过均值滤波对图像进行平滑处理. cv::GaussianBlur: 通过高斯滤波对图 ...
最新文章
- Android 系统提供的文件下载
- js/jq基础(日常整理记录)-2-一个简单的js方法实现集合的非引用拷贝
- matlab gm 1 1,MATLAB 如何用GM(1,1)做预测?请大神帮忙!
- Java多线程知识小抄集(一)
- 双十一期间快递员凌晨送件 将下班程序员误认成小偷
- Docker学习总结(12)——非常详细的 Docker 学习笔记
- Zookeeper应用场景
- Spring MVC EL表达式不能显示
- VS2013 密钥 – 所有版本
- 忘记linux密码怎么办?
- 内存占用率过高怎么办 一分钟解决
- linux igb网卡,网卡驱动程序igb ixgbe
- centos桌面版配置ip_CentOS7安装GNOME可视化界面和如何配置IP地址
- 人人商城 邀请人 成功购买会员卡之后返现
- 计算机关于剪贴板的知识,复制、剪切、粘贴与剪贴板、内存的关系
- @Transactional 的使用
- 选择DC-DC开关电源控制器的实战过程
- 功能测试报告怎么写?进来看标准模板
- Easypack之Alpine容器系列:Redmine
- execution切入点表达式
热门文章
- 人间故事馆话题:聊聊那些被骗经历,让其他人不再被骗
- 初识多线程之基础知识与常用方法
- 多线程中对全局变量(整型类型)是否需要同步操作
- “拒绝访问”协助方案
- android升级adt和sdk之后无法识别SDK Location的一个解决方式
- 社保系列11《ATR》
- SAP NetWeaver 平台介绍
- 全国省份、城市、地区全数据(SQL版与XML版)包括各城市邮编
- 学计算机毁一生,大学中4大“天坑”级别的专业,学了毁一生,家里没钱不要学...
- 如何搭建python框架_从0到1告诉你搭建完整Python+requests接口自动化测试框架!