当前位置: 首页 > news >正文

数字图像处理-7-图像的梯度锐化算法

文章目录

  • 1. 门限梯度锐化
  • 2. 梯度二值化
  • 3. 固定值梯度锐化

图像梯度是灰度值在空间上的变化速率。平滑区域梯度小(灰度均匀),边缘区域梯度大(灰度急变)。
其实这种方法在前面也说过,计算公式如下: 一阶差分近似

G(x, y) = sqrt( (f(x,y) - f(x-1,y))² + (f(x,y) - f(x,y-1))² )

梯度锐化根据梯度大小采取三种不同的增强策略:

    1. 门限锐化 — 梯度大则增加固定亮度 +100(可动态调整),边缘变亮但保留纹理
    1. 二值化 — 根据梯度输出纯黑/白二值图,清晰显示边缘轮廓
    1. 固定锐化 — 梯度大则强制输出白色,否则保留原灰度值

下面是一阶差分近似梯度的python代码,在下面三种方法中都会用到, 原理简单.就是计算上下,左右 的梯度值, 然后求各个维度差分平方的和.
这里说明下下面代码片段中默认阈值(GRADIENT_THRESHOLD=30)

def_compute_gradient(img,x,y):""" 计算像素 (x, y) 的梯度幅度(使用左邻和上邻的一阶差分)。 公式: G = sqrt( dx² + dy² ) dx = f(x, y) - f(x-1, y) dy = f(x, y) - f(x, y-1) """curr=img.get_pixel(x,y)left=img.get_pixel(x-1,y)up=img.get_pixel(x,y-1)dx=curr-left dy=curr-upreturnmath.sqrt(dx*dx+dy*dy)

1. 门限梯度锐化

  • 原理:
    对边缘区域(梯度≥阈值)叠加固定亮度 100(默认),使边缘在视觉上更突出;
    平坦区域保持原值,不破坏背景纹理细节。

  • 处理方法:
    设置阈值threhold, 如果超过了阈值,则在当前灰度值上面叠加指定的灰度值,让图像边缘更突出

    G >= threshold → output = min(G + 100, 255) [边缘增亮] G < threshold → output = 原始像素值 [平坦区域不变]
  • python代码

defthreshold_enhance(img,threshold=GRADIENT_THRESHOLD):result=img.clone()foryinrange(1,img.height):forxinrange(1,img.width):g=_compute_gradient(img,x,y)ifg>=threshold:result.set_pixel(x,y,min(255,g+100))# g < threshold 时 clone 的原值保持不变returnresult
  • 效果图

2. 梯度二值化

  • 原理:
    对梯度图像进行全局阈值分割,输出纯黑白二值图。结果图像清晰地勾勒出边缘轮廓,常用于后续形态学处理。

  • 处理方法:
    这其实就是二值化的处理过程

    G > threshold → output = 255 (白色,边缘) G <= threshold → output = 0 (黑色,非边缘)
  • python代码

defbinary_threshold(img,threshold=GRADIENT_THRESHOLD):result=Image(img.width,img.height)# 默认全黑foryinrange(1,img.height):forxinrange(1,img.width):g=_compute_gradient(img,x,y)result.set_pixel(x,y,255ifg>thresholdelse0)returnresult
  • 效果图

3. 固定值梯度锐化

  • 原理:
    介于门限增强和二值化之间:
    边缘被强制置为最大亮度(255),突出轮廓;
    非边缘区域保留原始灰度,保持背景信息可读。
  • 处理方法:
    G > threshold → output = 255 [边缘高亮为白色]
    G <= threshold → output = 原始像素值 [非边缘保留原灰度]
deffixed_enhance(img,threshold=GRADIENT_THRESHOLD):result=img.clone()foryinrange(1,img.height):forxinrange(1,img.width):g=_compute_gradient(img,x,y)ifg>threshold:result.set_pixel(x,y,255)# g <= threshold 时保持 clone 的原值returnresult
  • 效果图
http://www.zskr.cn/news/1374908.html

相关文章:

  • 2026年比较好的洗衣机碳刷/南通风扇碳刷/跑步机碳刷/汽车起动机碳刷厂家哪家好 - 行业平台推荐
  • AlphaEvolve:LLM与进化算法融合的自动代码优化系统
  • 告别臃肿!用终端命令一键清理macOS Sonoma里不用的4K动态壁纸
  • ARM SME多向量浮点运算指令FAMAX/FAMIN详解
  • 全波形反演新思路:大步长梯度优化器如何克服周波跳跃难题
  • 后端开发与DevOps的融合:持续集成与部署实战
  • 为什么你的ChatGPT公众号打开率不足8%?腾讯内部流出的3类高唤醒标题公式(限时公开)
  • CryENGINE三层架构实战:C++/C#/Lua协同开发与安全绑定
  • 【论文阅读】VLAW: Iterative Co-Improvement of Vision-Language-Action Policy and World Model
  • HTTPS静态资源403/404根因排查:从Nginx配置到SELinux权限
  • Scalify:基于e-graph的分布式机器学习计算图等价性验证工具
  • 共有云环境redis的热key怎么处理
  • 欧盟AI法案下的公平性实践:从透明度、可解释性到可审计指标
  • 纸上得来终觉浅?从 0 到 1 实现分布式 KV 后,我才读懂了 TiDB 的设计
  • 山东大学软件学院项目实训-基于语言大模型的智能居家养老健康守护系统-个人博客(五)
  • 2026年质量好的大孔径深孔钻镗床/德州圆钢深孔钻镗床口碑好的厂家推荐 - 品牌宣传支持者
  • 集成光子学与连续变量量子光学技术解析
  • 什么是ERC-8183
  • Gemini 3.5破解50年数学猜想,数学家紧急复核
  • 昇腾CANN ops-math 仓:数据类型转换的性能陷阱
  • 2026年社区巡逻机器人选型:核心功能对比与部署实践
  • Go语言死锁检测:互斥与等待
  • Future接口学习
  • 神经网络原理 第九章:自组织映射
  • 2026年靠谱的磁选机/矿用磁选机/潍坊干式磁选机优质厂家汇总推荐 - 行业平台推荐
  • 从零开始手搓一个xv6内核页表:跟着6.S081源码一步步理解walk和mappages函数
  • 合肥Geo搜索优化服务的真实成本与效果分析
  • 字符缓冲流 字节缓冲流
  • 保姆级教程:用Python 3.8 + PyTorch 1.11 从零部署Meta的SAM模型(含VIT-H权重下载与避坑指南)
  • 处理ERA5等气象数据必看:用rioxarray解决NC文件裁剪后经纬度错乱的坑