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

ISP Pipeline(4): Anti Aliasing Noise Filter 抗锯齿与降噪滤波器

上一篇文章讲的是:ISP Pipeline(3):Lens Shading Correction 镜头阴影校正-CSDN博客

视频:(5) Anti Aliasing Noise Filter | Image Signal Processing Pipeline Tutorial Series

源码:ISP Pipeline(3):Lens Shading Correction 镜头阴影校正-CSDN博客

Anti-Aliasing Noise Filter 是在图像进入后续 ISP 流程之前,对 Bayer 原始图像进行空间域平滑处理,目的是消除图像中高频噪声和虚假信号,同时尽量保留边缘信息。

1. Aliasing 锯齿产生的原因

  • 原始图像分辨率有限,高频内容(如细线、格栅等)在采样时失真;

  • 在 Bayer 模式下,高频伪影更严重,会影响 demosaic;

  • 解决方式:在采样或处理前做低通滤波(Anti-Aliasing Filter,AA Filter)。

2. Noise 噪声的来源

  • 主要来自于传感器(热噪声、电路噪声)、环境光弱时的随机波动;

  • 原始 Bayer 图中的噪声不仅影响清晰度,还会引入伪彩。

 

滤波器实现方式(常见)

 1. Gaussian Blur / Bilateral Filter

  • 对图像做模糊处理,降低高频分量;

  • Gaussian 是均值滤波的加权版;

  • Bilateral(双边滤波)可以同时平滑图像又保留边缘。

 2. Edge-Preserving Filter

  • 用于保持边缘而去除背景噪声;

  • 比如 Guided Filter、Non-Local Means、Kuwahara Filter

  • 适用于对图像细节要求高的高端 ISP。

 3. Median Filter(中值滤波)

  • 抵抗椒盐噪声、单点突变等;

  • 对于 dead pixel 或突发点状噪声较好。

 代码实现:


def AAF(lsc_img, k):"""inputs:lsc_img = bayer domain image after lens shading correctingk = anti-aliasing correction factor to control strenght of anti-aliasingoutputs:aaf_img = bayer domain image after applying anti-aliasing"""padded_img = np.pad(lsc_img, (2,2), 'reflect') # pad the image to give corner pixels full set of neighborsp1 = padded_img[:-4:1, :-4:1] # create 9 different arrays for p0:p8p2 = padded_img[:-4:1, 2:-2:1]p3 = padded_img[:-4:1, 4::1]p4 = padded_img[2:-2:1, :-4:1]p0 = padded_img[2:-2:1, 2:-2:1] * (k**0.5)p5 = padded_img[2:-2:1, 4::1]p6 = padded_img[4::1, :-4:1]p7 = padded_img[4::1, 2:-2:1]p8 = padded_img[4::1, 4::1]neighbors = np.array([p1, p2, p3, p4, p0, p5, p6, p7, p8]) / ((k + 8)**0.5)aaf_img = (np.sum(neighbors, axis = 0)).astype(np.uint16) # apply the filterreturn aaf_img

自定义 Anti-Aliasing Filter(抗锯齿滤波器),对中心像素及其周围 8 个邻居加权平均,达到 降噪和平滑高频伪影 的目的。

提取邻域:

p1 p2 p3
p4 p0 p5
p6 p7 p8

其中中心像素是:

p0 = padded_img[2:-2, 2:-2] * (k**0.5)

其余 8 个邻居不乘 k 权重,而是在后续归一化除以 sqrt(k + 8)

权重逻辑:

aaf\_img = \frac{\sqrt{k}\cdot p0+p1+p2+...+p8}{\sqrt{k+8}}

其中 k 越大,越强调中心像素,越接近原图(平滑度下降);
k 越小,越平均,图像越模糊。 

http://www.lqws.cn/news/535537.html

相关文章:

  • 【thinkphp5】Session和Cache记录微信accesstoken
  • QT实现一个三轴位移台的控制界面
  • QT Creator构建失败:-1: error: Unknown module(s) in QT: serialport
  • 【CMake基础入门教程】第七课:查找并使用第三方库(以 find_package() 为核心)
  • 【缓存技术】深入分析如果使用好缓存及注意事项
  • Flux.create
  • Linux 内核 TCP 的核心引擎:tcp_input.c 与 tcp_output.c 的协同之道
  • ubuntu安装docker遇到权限问题
  • TCP 重传机制详解:原理、变体与故障排查应用
  • 利用python和libredwg库解析dwg格式文件输出GeoJSON
  • Mac电脑如何搭建基于java后端的开发的各种工具服务
  • 自动获取文件的内存大小怎么设置?批量获取文件名和内存大小到Excel中的方法
  • IDEA下载不了插件了怎么办?从本地导入插件详细教程!
  • ubuntu 远程桌面 xrdp + frp
  • 【工具推荐】WaybackLister——发现潜在目录列表
  • OpenBayes 一周速览丨Nanonets-OCR-s深度语义理解,精准结构化转换;HLE人类问题推理基准上线,含2.5k题目,助力封闭式评估体系构建
  • 环境太多?不好管理怎么办?TakMll 工具帮你快速切换和管理多语言、多版本情况下的版本切换。
  • 基于SpringBoot和Leaflet的区域冲突可视化-以伊以冲突为例
  • 【Pytorch】语言模型上的动态量化
  • 供应链管理:主要生产计划类型及其相关信息
  • Solidity学习 - 认识Solidity合约结构
  • GitLab 18.1 发布 Runner、无效的个人访问令牌查看等功能,可升级体验!
  • 一分钟了解Transformer
  • 深入了解 AWS EventBridge
  • 无人机螺旋桨机械能模块解析
  • 深入解析前端 Meta 标签:HTML 的隐形守护者与功能大师
  • cudaStreamCreateWithPriority和cudaDeviceGetStreamPriorityRange
  • 基于vue框架的二手图书零售系统q7jqy(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 279. 完全平方数
  • 2025 Java开发生态全景图:云原生、AI与性能优化的技术融合