openISP学习3-AAF— Anti-Aliasing Filter(抗混叠滤波)

<数据集>咖啡叶片病害识别<目标检测> YOLO与VOC格式的咖啡叶片病害识别数据集,适用于YOLO系列、Faster Rcnn、SSD等模型训练,类别:Cercospora、Miner、Phoma、Rust,图片数量1744。文件中包含图片、txt标签、指定类别信息的yaml文件、xml标签,已将图片和txt标签划分为训练集、验证集和测试集,可直接用于YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12、YOLOv13、YOLOv26等YOLO系列算法的训练。 阅读详情

什么是AAF

我们知道RAW图中记录的是每个点其实记录的是一种颜色, 但是平时我们看到图像上每个点基本都是RGB三色通道的图,那么我们就需要通过"去马赛克"算法把RAW中每个点的其它通道的值补回来, 比如针对R通道的数据,它需要通过周围像素的G和B通道的值,来推算出它的G和B通道的值.

  • 产生了问题:
    如果拍的图像有非常细密的纹理(如细密的格子衫,百叶窗). 这些纹理的细节比传感器的排列阵列还密集的话,那么传感器采集到信息有缺失,导致去马赛克后颜色失真. 再举个例子,比如夜晚透过细密的防蚊窗纱看远处的灯,我们可以再窗纱上看到弯曲亮带.
    如下图1,因为细纹间距超过了像素间距,无法准确采样的亮暗变换的纹理,
    图2中,间距较大没问题,像素能采集到对应准确的颜色.
    在这里插入图片描述

  • 什么是“奈奎斯特频率”?(相机的视力极限)
    我们可以把它理解为相机传感器能分辨的“最高清晰度极限”。
    如果场景里的细节超过了这个极限(比如极其细密的条纹),相机就无能为力了,强行记录只会变成一团乱码(也就是前面说的伪彩色)。

  • 什么是“AAF 抗混叠滤波”?(提前打马赛克)
    既然相机有“视力极限”,为了防止它在极限边缘“猜错颜色”产生难看的伪彩,工程师想出了一个聪明的办法:在算法去猜颜色之前,先主动把那些超出相机极限的、极其细密的纹理给模糊掉。
    这个“提前模糊”的动作,就是 AAF(抗混叠滤波)。
    它就像一个筛子(低通滤波器),把那些会导致算法出错的、过于细密的纹理(高于奈奎斯特频率的分量)直接过滤掉。虽然牺牲了一点点极限锐度,但保证了算法在“猜”颜色时不会出错,从而避免了画面出现奇怪的伪彩色。

AAF算法原理

在 Bayer RAW 图像去马赛克之前,高频信号(纹理细节)与 Bayer 阵列的空间采样频率可能发生混叠,产生伪彩色。AAF 在 Bayer 域对图像进行低通滤波,抑制高于奈奎斯特频率的分量。

滤波器核
[[1, 0, 1, 0, 1],
 [0, 0, 0, 0, 0],
 [1, 0, 8, 0, 1],   / 16
 [0, 0, 0, 0, 0],
 [1, 0, 1, 0, 1]]
中心权重为 8,四角权重为 1,总权重 = 8 + 8×1 = 16(归一化)。

设计要点: 偶数位置系数为 0,使得滤波仅在同色像素间进行(步长 2)。R 位置的滤波只使用周围 R 像素,G/B 同理。这避免了不同颜色通道的混叠。

AAF算法python代码

实现细节
使用 scipy.ndimage.correlate 实现卷积,效率较高
实际卷积操作跨越整个 5×5 邻域,但相邻颜色位置系数为 0,等效于只对同色像素低通. 这里其实就一个加权求平均的操作,当前像素的权重最大.

class AAF:
    'Anti-aliasing Filter'

    def __init__(self, img):
        self.img = img

    def padding(self):
        img_pad = np.pad(self.img, (2, 2), 'reflect')
        return img_pad

    def execute(self):
        img_pad = self.padding()
        raw_h = self.img.shape[0]
        raw_w = self.img.shape[1]
        aaf_img = correlate(self.img, np.array([[1, 0, 1, 0, 1],
                                                [0, 0, 0, 0, 0],
                                                [1, 0, 8, 0, 1],
                                                [0, 0, 0, 0, 0],
                                                [1, 0, 1, 0, 1]])/16)
        self.img = aaf_img
        return self.img

AAF测试代码

测试代码生成一个32x32的的图像,因为AAF其实就是一个低通滤波的效果.它对每个像素周围5x5邻域内的像素,做加权平均的运算,平滑图像.

    def test_lowpass_reduces_variance(self):
        """含噪图像经 AAF 后方差应减小(低通效果)。"""
        rng = np.random.default_rng(42)
        img = 150 + rng.integers(-100, 100, size=(32, 32), dtype=np.int16)
        img = img.astype(float)
        aaf = AAF(img.copy())
        out = aaf.execute()
        show_bayer_images(img, out, "left", "right-AAF")
        self.assertLess(float(out.std()), float(img.std()),
                        "AAF 未减小图像方差,低通效果不明显")
  • 测试效果
    AAF 之后图像变的平滑了许多.
    在这里插入图片描述
Oracle监听配置 Oracle监听配置## 标题 选择“监听程序配置”,然后下一步。 选择重新配置,然后下一步/。 不用管,按下一步。 下一步。 选择“否”,下一步。 选择"本地net服务名配置",然后下一步。 选择“重新配置”,然后下一步。 服务名 是"Oracle",然后下一步。 主机为你的IP地址,在doc系统下通过"ipconfig"获取IP地址。然后输入,然后下一步。 选择“是,进行测试... 阅读详情

相关推荐

百度新闻评论内容抓取

通过抓包分析发现,百家号手机app端文章评论内容接口为:https://ext.baidu.com/api/comment/v1/comment/getlist?appid=101&sid=1008524_2-1010050_1-1007549_23033-1007550_23035&cuid=01B5EAF73E8A83BB842BE04E4FB6C656|23200201047...

codingforhaifeng的博客 2421

OpenISP 模块拆解 · 第4讲:抗混叠滤波 (AAF)

AAF 是抗混叠滤波模块,位于 BLC/LSC 之后、AWB/CFA 之前。它在 Bayer RAW 域做轻微低通,降低高频纹理在 demosaic 时产生伪彩和摩尔纹的概率。

万一 211

用Coze平台30分钟打造《花光10亿》小游戏:零代码AI开发实战

本文详细介绍了如何利用字节跳动推出的Coze平台,在30分钟内零代码开发一款名为《花光10亿》的AI小游戏。通过配置提示词、集成图像生成插件、构建自动化工作流以及使用数据库功能,即使没有编程基础的用户也能快速将创意转化为可交互的智能应用,体验AI开发的便捷与高效。

weixin_29313547的博客 206

图像处理-RGB24转YUV420遇到的坑以及执行效率对比

文章目录一、色彩空间简介及一些参考文档二、YUV和RGB转换公式三、RGB和YUV420转换提前需要了解的知识1.YUV420内存布局2.RGB内存布局3.转换方式四、源代码执行效率对比五、编译过程中遇到的问题 一、色彩空间简介及一些参考文档 不同的色彩空间,颜色的表现形式不同(见http://colorizer.org/ 这个网站中简单介绍了各个色彩空间的模型。)。色彩空间中的颜色是可以相互转化...

armwind的专栏 7484

忆阻器(二)——忆阻模拟器

除了真实的器件,我们也可以用运放和乘法器来搭忆阻模拟器。这节将介绍数学模型、matlab仿真及multisim仿真。 一、数学模型 忆阻分为磁控和荷控两种,这里介绍三次非线性磁控忆阻模型: {I=W(φ)VW(φ)=a+3bφ2dφdt=V \begin{cases} I=W(\varphi)V \\ W(\varphi)=a+3b \varphi ^2\\ \frac{d \varphi }{dt}=V \end{cases} ⎩⎪⎨⎪⎧​I=W(φ)VW(φ)=a+3bφ2dtdφ​=V​ 这里的WWW

http://www.icfgblog.com/ 1万+

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

用户提了个需求,让我批量导入内部订单几百个内部订单。我本打算用写段ABAP 代码来调用 BAPI (BAPI_INTERNALORDER_CREATE)就可以了。但想到我很久没有用过LSMW 了,都快要忘记了。于是我采用LSMW的方式,完成了任务。并把过程记录下来,形成教程方便我以后回头查看,分享出来也希望对大家有帮助。

IT小职员 2万+

camera模组拆解记录

今天在座位下面捡到一颗模组,想到做几年Camera,还没有拆过模组,这次就花点时间拆开看了一下。下图从左到右介绍 1.PCB板:由模组厂根据芯片封装Layout出PCB,然后将sensor ic焊接上去。这里本人特地看了一下连接处。不是传统的芯片IC,直接连接到PCB焊盘上,而是用细金属丝将芯片IC和PCB焊盘连接到一起的。百度看了一下,说这是金丝 2.底座 3.滤光片 4.镜头 5.VCM ...

armwind的专栏 6566

【IxNetwork】史上最全IxNetwork测试仪使用精讲(一),图文教程超赞超详细!!!

IXIA使用的是Server-client模式,Server端在测试仪表的主机上,在开机后会随着主机内的操作系统的启动而自动启动,一般情况下不需要人为的手工启动。因此在通常不需要为主机配置专用的显示器和键盘。client端包括两个测试软件: Ixia Explorer和ScriptMate。这两个软件一般安装在测试用计算机上,在仪表自带的主机中也有这两个软件。根据测试项目的不同来选择使用不同的软件。Ixia Explorer主要提供数据流的测试,针对设备的功能进行测试;

风云说通信 2054

网络-本地回路的抓包工具RawCap

本地使用wireshark无法抓回路包,为此百度了一下RawCap可以抓回路包,亲测可用。特记录下来。 1.工具下载地址 https://www.netresec.com/?page=RawCap 2.工具使用界面 选择5,回路监听 输入保存文件的名称,回车,即可开始抓包 ctrl+c,结束抓包。 3. wireshark中使用 将文件从wireshark中打开 文件->打开, ...

armwind的专栏 4231

Arcgis模型构建器01——写一个简单的模型

在使用模型构建器解决这个需求之前,我们要想清楚如果我们手动解决的话,应该如何去处理,因为构建模型的过程正是基于我们手动处理的过程来构建的。我有一个全国的dem影像数据和一个陕西省边界范围矢量,现在我想获取陕西省的dem影像的坡度数据。填写完之后点击确定,我们发现,两个输入数据和工具连接起来了,并且通过裁剪工具得到一个中间结果,即。我们发现工具框和中间数据框都存在阴影,说明已经运行过了这个模型,不报错就说明模型运行成功!现在我们就把数据和工具都串联起来了,成功构建好了模型。

爱吃雪糕的小布丁的博客 918

PCL点云库入门(第6讲)——PCL库中Eigen数学工具库的基本使用(持续更新)

Eigen库是一个高性能的C++模板库,专注于线性代数、矩阵和向量运算,以及相关的数值分析和算法。在Eigen库中,所有的矩阵和向量均被视为矩阵模板类的实例。向量可以被看作是特殊形式的矩阵,具体表现为只包含1行或1列。

qq_36812406的博客 1752

网络-RTSP简单理解

网络上有很多介绍RTSP的文章,但是看后还是印象不深刻,这里就记录一下读学习笔记吧。 1.协议介绍 RTSP协议以CS的方式工作,它是一个应用层的多媒体播放控制协议,用来使用户在播放从互联网下载的实时数据时能够对其进行控制,如暂停、继续、快进、快退等 RTSP的语法和操作与HTTP相似了,所有请求和响应都是基于ASCII文本。不同的是RTSP是有状态的协议,而HTTP是无状态的。RTSP记录客户端...

armwind的专栏 3911

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ubuntu opencv开发环境配置介绍

一、源码包下载 源码包从链接:https://opencv.org/releases.html 下载 解压源码包 源码下载下来后是zip包,这里本人下载的是3.4.3的版本,则使用unzip opencv-3.4.3.zip 解压出来成下面样子。 源码包文件列表 armwind@armwind-X555LD:~/data/opencv/opencv-3.4.3$ tree -L 1 . . ├...

armwind的专栏 3067

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ffmpeg学习之-window下编译安装nginx用ffmpeg推抓视频流

https://www.cnblogs.com/qfb620/p/5508468.html

armwind的专栏 2148

网络-TCP/UDP/IP体系结构和协议简介

发生大幅杀跌

armwind的专栏 1840

常用的视频接口

常用视频接口别人已经总结好了,直接拿过来吧 https://blog.youkuaiyun.com/ytffhew/article/details/83618007

armwind的专栏 1075

数字图像处理-5-图像处理的数学基础

本文介绍了数字图像处理中的微分运算方法。首先阐述了一阶差分(横向、纵向和双向)用于检测图像边缘,以及二阶差分和拉普拉斯算子用于检测灰度变化率的变化。详细推导了4邻域和8邻域拉普拉斯卷积核的数学原理,并比较了它们的特性。随后给出了Python实现代码,包括水平、垂直和双向一阶差分运算,以及基于卷积核的拉普拉斯运算方法。通过实际效果图展示了不同运算对边缘检测的效果差异,为图像边缘检测提供了理论基础和实现参考。

armwind的专栏 553

openISP学习7-CCM — Color Correction Matrix(色彩校正矩阵)

本文介绍了色彩校正矩阵(CCM)的原理与实现。CCM通过3×4矩阵变换将相机RGB转换至标准色彩空间,修正光谱响应差异。算法采用1024倍定点数(Q10格式)存储系数,包含3×3线性变换和3个偏移项。测试部分验证了三种场景:1)单位矩阵保持颜色不变;2)偏移项正确影响各通道;3)非对角项实现通道间色彩转换。实验通过构建特定测试图像,对比处理前后效果,直观展示了CCM对色彩的重映射作用。该实现逐像素计算,支持8位RGB输出,可用于相机图像处理流水线中的色彩校正环节。

armwind的专栏 518

数字图像处理-1-DDB,DIB以及Bitmap

本文介绍了DDB(设备相关位图)和DIB(设备无关位图)的区别,以及Bitmap图像文件的结构。DDB依赖设备调色板,而DIB自带颜色信息。Bitmap文件包含文件头、信息头、颜色表和图像数据四部分,其中颜色表仅存在于非24位图像中。通过一个15x16像素的闹钟图像实验,展示了如何解析Bitmap文件,包括读取文件头、信息头、颜色表以及图像数据。实验结果表明,该图像使用4位深度,包含16种颜色,验证了Bitmap文件结构的正确性。

armwind的专栏 480

ffmpeg学习之-初步认识及windows环境搭建

1.源码下载 http://www.ffmpeg.org/download.html 2. ffmpeg:FFmpeg全名是Fast Forward MPEG(Moving Picture Experts Group) 快速动态图像专家组.

armwind的专栏 462

数字图像处理-2-二值化,投影,灰度变换,直方图

本文介绍了基于Python实现的图像处理方法,包括二值化、灰度变换和灰度投影。二值化部分包含固定阈值法和双固定阈值法,可将图像转换为黑白两色。灰度变换部分介绍了窗口灰度变换和分段线性变换,用于调整图像动态范围。灰度投影则用于分析图像元素间隔,如文字识别中的行间距检测。所有方法均基于8位位图实现,未使用第三方图像处理库,代码简洁高效。

armwind的专栏 450

数字图像处理-11-图像的一些合成操作

本文介绍了三种图像合成方法:加法、减法和与运算。加法合成通过像素值相加实现亮度叠加,适用于多曝光融合;减法合成提取两图差异,可用于背景去除;与运算通过二值化后逻辑与操作保留共同亮区域,常用于图像掩膜处理。每种方法均提供Python实现代码,支持8位灰度和24位彩色图像处理,并包含效果说明和示例图。

armwind的专栏 447

数字图像处理-9-图像的腐蚀和膨胀

本文介绍了二值图像的腐蚀和膨胀操作。腐蚀操作包括垂直腐蚀(3x1窗口检测上下像素)、水平腐蚀(1x3窗口检测左右像素)和全方向腐蚀(自定义5像素窗口检测),通过检测窗口内是否存在背景像素来缩小前景区域。膨胀操作与之对偶,包括垂直膨胀、水平膨胀和全方向膨胀,通过检测窗口内是否存在前景像素来扩大前景区域。每种操作都提供了Python实现代码和效果图展示,展示了不同方向处理后的图像变化。这些形态学操作可用于图像边界调整和特征提取。

armwind的专栏 433

潜水员检测数据集 | 潜水员检测 水下目标检测 水域搜救 目标检测9288期

本数据集专注于 水下环境中的潜水员视觉检测与识别 ,服务于水域搜救、海洋工程巡检及水下安防。数据涵盖不同水深、光照和水质条件下的潜水员图像,适配目标检测模型训练、水下机器人视觉及自动化监控等应用。

qq_2529413168的博客 211

高效目标检测利器:X-AnyLabeling 加载自定义 YOLO 模型自动标注实操指南

要让模型输出正确的标签,必须告诉软件你的类别是什么。这是自动标注不报错、标签不乱的核心步骤!在 X-AnyLabeling 安装目录下,找到文件夹。找到一个与你模型架构匹配的 YAML 模板(比如或复制一份并重命名(例如),用记事本打开修改关键信息:type: yolov8 # 根据你的模型填 yolov5 或 yolov8display_name: yolov8n # 你的检测模型。

Smoothly_Lu的AI博客空间 330

libva中的图像格式说明

本文简要介绍libva-2.6.0中2D图像格式,涵盖YUV与RGB系列。主要格式包括VA_RT_FORMAT_YUV420、YV12、NV12等,按采样率(如4:2:0、4:2:2)和位深(如8/10/12位)区分。内存布局分为平面(如420P、444P)与打包(如YUY2、AYUV)两种方式,详细说明各格式的像素占用、平面数量及数据排列。

ZZXTIANMING的博客 230
上一篇: openISP学习2-DPC(黑电平补偿)和BLC(黑电平补偿)
下一篇: openISP学习4-AWB(自动白平衡增益控制)
armwind
博客等级 码龄12年 406粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值