<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[armwind的专栏]]></title><description><![CDATA[蜗牛的奔跑：男儿志步天下事，但有进步不有止!]]></description><link>https://blog.youkuaiyun.com/armwind</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; armwind]]></copyright><item><title><![CDATA[PWM互补输出-死区插入(stm32)]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/163799592</link><guid>https://blog.youkuaiyun.com/armwind/article/details/163799592</guid><author>armwind</author><pubDate>Sun, 16 Aug 2026 15:26:53 +0800</pubDate><description><![CDATA[理解：当主输出使能（MOE）为 1，但某个通道的输出使能（CCxE/CCxNE）为 0 时，该引脚会输出由 OSSR 决定的电平。配置为 Level_1 时，BDTR 寄存器中的 DTG（死区时间）、BKE（刹车使能）、BKP（刹车极性）和 AOE（自动输出使能）位将被硬件锁定，在定时器运行期间无法被软件修改，提高了系统的安全性。互补通道和主通道的极性正好是相反的, 如果主通道的极性确定了,那么互补通道的也就确定了. 如下面这段代码,如果ARR=500, 且配置为PWM2模式,有效电平为低,]]></description><category></category></item><item><title><![CDATA[PWM输出(stm32)-非互补]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/163784273</link><guid>https://blog.youkuaiyun.com/armwind/article/details/163784273</guid><author>armwind</author><pubDate>Sat, 15 Aug 2026 23:01:27 +0800</pubDate><description><![CDATA[这个需要设置对应通道的CCR寄存器,定时器工作时,会比较CCR的值,当计数器工作在递增模式时,当计数器的值小于CCR中的值时,输出TIM_OCPolarity配置的极性,反之输出相反的极性.PWM的极性通过TIM_OCPolarity配置, 一般默认都是高电平.一般我们说占空比为20%,就是意为一个周期内高电平持续时间占一个周期时间的20%.这个通过设置定时器的ARR寄存器即可,外部通过TIM_Period 来配置. TimerClk/TIM_Period 即为PWM频率.]]></description><category></category></item><item><title><![CDATA[定时器输入捕获模式(stm32)]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/163783375</link><guid>https://blog.youkuaiyun.com/armwind/article/details/163783375</guid><author>armwind</author><pubDate>Sat, 15 Aug 2026 22:30:09 +0800</pubDate><description><![CDATA[当计数器没有发生溢出时,(value2-value1)即为外部波形一个周期中计数器增加或减少的计数器值. 如果计数器发生过溢出,则实际的value2 为 (计数器溢出次数 * 定时器时钟) - value1 + value2.说起定时器,我们可能都认为都是简单的定时功能.但说句实在话,想把定时器学的透彻还是需要发些时间的.定时器时钟为60K. 从原理上这个可以用来测量编码器的脉冲数量,进而计算出瞬时速度。stm32f4的定时器的标准库都有3300多行,可见其实也是很复杂的..它的过程是这样的,]]></description><category></category></item><item><title><![CDATA[claude code接入deepseek报 “API Error: 400“]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161948259</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161948259</guid><author>armwind</author><pubDate>Sat, 13 Jun 2026 11:03:27 +0800</pubDate><description><![CDATA[运行claude code报如下错误,根本原因是claude 版本太新,一些规则已经更改。下面先说明下我的环境。]]></description><category></category></item><item><title><![CDATA[openISP学习15-BCC — Brightness/Contrast Control（亮度/对比度控制）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161935765</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161935765</guid><author>armwind</author><pubDate>Fri, 12 Jun 2026 22:34:20 +0800</pubDate><description><![CDATA[本文介绍了亮度对比度调整算法的原理及实现。该算法通过线性变换公式output = input × (1 + contrast) + brightness - 127 × contrast对图像进行全局调整：亮度参数控制整体明暗，对比度参数强化/减弱明暗差异。代码实现采用int16类型防溢出，并通过clipping限制输出范围。测试显示，亮度调整可使图像整体变亮/暗，对比度增强则使亮区更亮、暗区更暗，效果符合预期。典型参数为brightness∈[-255,255]、contrast∈[-1,4]（需除以32]]></description><category></category></item><item><title><![CDATA[openISP学习14-HSC — Hue/Saturation Control（色调/饱和度控制）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161933785</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161933785</guid><author>armwind</author><pubDate>Fri, 12 Jun 2026 21:32:57 +0800</pubDate><description><![CDATA[本文介绍了YUV色彩空间中的色调旋转和饱和度控制原理及实现。在YUV空间中，色调旋转对应UV平面向量旋转，饱和度控制对应UV向量长度缩放。文章给出了RGB与YUV的转换公式，并推导了色调旋转和饱和度调整的数学表达式。代码实现部分展示了使用预计算查找表进行高效运算的方法，修复了原代码中旋转后未除256的定点数处理错误，并新增了单独返回旋转效果的输出。测试代码通过生成UV渐变图像，验证了算法效果：左图显示原始UV图像，中图展示45度色调旋转结果，右图为饱和度增强1.5倍的效果。典型参数设置为色调128度、饱和度]]></description><category></category></item><item><title><![CDATA[openISP学习13-FCS — False Color Suppression（假彩色抑制）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161926842</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161926842</guid><author>armwind</author><pubDate>Fri, 12 Jun 2026 18:16:55 +0800</pubDate><description><![CDATA[文章摘要 本文介绍了抑制伪彩色（False Color Suppression, FCS）算法的原理与实现。FCS通过检测图像边缘区域（edgemap）动态调整色度（UV）的饱和度，在平坦区域保留色彩，在强边缘区域降低色度增益以减少伪彩色条纹。算法采用分段处理：边缘值低于阈值时保持原色度，超过最大阈值时完全去色，中间过渡区线性衰减。实现中关键参数包括边缘阈值、增益系数等，并通过Python代码展示了具体计算过程。测试案例验证了算法对不同边缘强度区域的色度调整效果，最终通过YUV420转换直观对比处理前后的色]]></description><category></category></item><item><title><![CDATA[openISP学习12-EE — Edge Enhancement（边缘增强）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161921580</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161921580</guid><author>armwind</author><pubDate>Fri, 12 Jun 2026 14:29:48 +0800</pubDate><description><![CDATA[本文介绍了一种基于类拉普拉斯算子的边缘增强算法。该算法通过3×5滤波器提取图像边缘响应，利用双阈值非线性增益函数（emlut）抑制噪声并增强显著边缘。处理流程包括：原图→边缘检测→非线性增益→叠加增强。核心参数包括滤波器矩阵、强弱边缘的增益系数和阈值范围。测试代码展示了阶跃边缘图像的增强效果，验证了算法在边界区域能产生明显的非零响应。最终输出为原图与增强边缘的叠加，有效提升了图像边缘的锐利度。算法通过卷积运算和阈值控制实现了对图像边缘的选择性增强。]]></description><category></category></item><item><title><![CDATA[openISP学习11-BNF — Bilateral Noise Filtering（双边滤波降噪）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161916274</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161916274</guid><author>armwind</author><pubDate>Fri, 12 Jun 2026 11:56:18 +0800</pubDate><description><![CDATA[双边滤波算法结合空间距离和像素值相似性进行加权处理，在平滑噪声的同时保留边缘。其核心权重公式为空间高斯权重与像素差值权重的乘积，实现"离得近且长得像"的像素才具有显著影响力。算法采用5×5邻域窗口，通过双重循环计算每个像素的值域差，并根据阈值分配不同权重。测试结果表明，该算法能有效平滑随机噪声图像，但对真实图像可能过度模糊细节。OpenISP中的实现包含空间权重矩阵(dw)和4级值域权重(rw)等关键参数，最终输出为邻域像素的加权平均值。]]></description><category></category></item><item><title><![CDATA[openISP学习10-NLM — Non-Local Means Denoising（非局部均值降噪）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161809526</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161809526</guid><author>armwind</author><pubDate>Fri, 12 Jun 2026 09:57:29 +0800</pubDate><description><![CDATA[摘要 非局部均值(NLM)算法是一种基于图像自相似性的降噪方法，通过搜索窗口内相似像素块的加权平均实现去噪。其核心公式为NLM(x)=Σw(x,y)×I(y)/Σw(x,y)，其中权重w(x,y)由像素块间欧式距离决定，采用指数衰减函数计算。算法在YUV空间的Y通道或灰度图上应用时计算较为简单。实现时需注意：(1)搜索窗口(2Ds+1)^2和邻域块(2ds+1)^2的关系；(2)通过wmax技巧保留中心像素最大权重；(3)参数h控制平滑强度。测试表明，该算法能有效降低高斯噪声，但对均匀图像处理前后无变化，且]]></description><category></category></item><item><title><![CDATA[openISP学习9-CSC-Color Space Conversion（色彩空间转换）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161809199</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161809199</guid><author>armwind</author><pubDate>Mon, 08 Jun 2026 23:11:11 +0800</pubDate><description><![CDATA[本文介绍了RGB到YUV色彩空间转换的原理和Python实现，重点使用BT.601标准公式。YUV色彩空间中Y代表亮度，U/V表示色度。文章给出了转换矩阵公式，并通过NumPy实现了高效向量化计算，包含防溢出处理（使用uint32中间类型）和结果规范化（除以1024）。测试验证了纯灰图像的色度中性（Cb/Cr≈128）和白点亮度值（Y≈217），证实了算法的正确性。该转换可用于图像处理中的亮度和色度分离操作。]]></description><category></category></item><item><title><![CDATA[openISP学习8-GC — Gamma Correction（Gamma 校正）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161807890</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161807890</guid><author>armwind</author><pubDate>Mon, 08 Jun 2026 22:43:02 +0800</pubDate><description><![CDATA[摘要： Gamma校正是图像处理中的关键非线性操作，用于适配传感器线性响应与人眼非线性感知（对暗部更敏感）。其原理通过幂函数output = (input/maxval)^γ × maxval将线性图像映射至感知均匀空间（γ=0.5时图像更亮，γ=2时更暗）。算法实现采用查找表（LUT）预计算映射值，支持RGB/YUV模式，逐像素查表优化效率。测试显示，去除输出归一化（/4操作）后，γ=0.5的校正效果符合预期（图像显著变亮），验证了算法的正确性。该技术有效解决了设备与人眼间的信号差异，提升图像显示的自然度]]></description><category></category></item><item><title><![CDATA[openISP学习7-CCM — Color Correction Matrix（色彩校正矩阵）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161777645</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161777645</guid><author>armwind</author><pubDate>Mon, 08 Jun 2026 00:05:49 +0800</pubDate><description><![CDATA[本文介绍了色彩校正矩阵（CCM）的原理与实现。CCM通过3×4矩阵变换将相机RGB转换至标准色彩空间，修正光谱响应差异。算法采用1024倍定点数（Q10格式）存储系数，包含3×3线性变换和3个偏移项。测试部分验证了三种场景：1）单位矩阵保持颜色不变；2）偏移项正确影响各通道；3）非对角项实现通道间色彩转换。实验通过构建特定测试图像，对比处理前后效果，直观展示了CCM对色彩的重映射作用。该实现逐像素计算，支持8位RGB输出，可用于相机图像处理流水线中的色彩校正环节。]]></description><category></category></item><item><title><![CDATA[openISP学习6-CFA -Color Filter Array Interpolation（去马赛克）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161753866</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161753866</guid><author>armwind</author><pubDate>Sat, 06 Jun 2026 23:51:16 +0800</pubDate><description><![CDATA[本文介绍了基于Malvar-He-Cutler算法的去马赛克技术，该算法通过梯度修正的双线性插值从Bayer阵列恢复RGB图像。算法针对不同颜色位置（R、Gr、Gb、B）采用特定的5×5卷积核进行插值：在R位置通过十字方向插值G、对角插值B；在Gr/Gb位置分别沿水平和垂直方向插值R/B。文章给出了Python实现关键代码，包括边界填充、数值精度处理和分块处理流程，最终输出裁剪至指定范围的RGB图像。该方法有效减少了伪彩色现象，是经典的实时去马赛克解决方案。]]></description><category></category></item><item><title><![CDATA[openISP学习5-CNF — Chroma Noise Filtering（Bayer 域色度噪声滤波）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161752032</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161752032</guid><author>armwind</author><pubDate>Sat, 06 Jun 2026 22:08:20 +0800</pubDate><description><![CDATA[本文介绍了一种针对Bayer域图像的色度噪声滤波算法（CNF）。该算法直接在去马赛克前处理原始Bayer数据，通过噪声检测（CND）和噪声校正（CNC）两个步骤消除R/B通道的色度噪声。检测阶段在8×8邻域内计算绿色像素和同色像素的均值，当像素值异常偏高时判定为噪声。校正阶段采用自适应策略，根据AWB增益和亮度调整修正强度，在保留高亮细节的同时有效抑制色度噪声。算法仅处理R/B通道，对G通道直接保留，并通过反射填充处理边界像素。实验表明该方法能有效改善图像质量，为后续处理提供更干净的Bayer数据。]]></description><category></category></item><item><title><![CDATA[openISP学习4-AWB(自动白平衡增益控制）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161749918</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161749918</guid><author>armwind</author><pubDate>Sat, 06 Jun 2026 18:39:16 +0800</pubDate><description><![CDATA[本文介绍了自动白平衡（AWB）算法的基本原理与实现。AWB通过调整各颜色通道增益系数来消除不同光源导致的色偏，使白色物体在图像中呈现真实白色。文章详细讲解了AWB算法的数学公式和Python实现代码，包括对不同Bayer模式的增益处理。测试部分展示了在不同增益参数下的图像效果变化。最后，文章说明了实际平台中AWB调参（tuning）的方法：在标准灯箱下使用灰卡或色卡拍摄，通过计算R/G和B/G比值确定参考点，进而估计场景色温，并介绍了全局增益和基于ROI的白平衡两种计算方式。]]></description><category></category></item><item><title><![CDATA[openISP学习3-AAF— Anti-Aliasing Filter（抗混叠滤波）]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161748552</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161748552</guid><author>armwind</author><pubDate>Sat, 06 Jun 2026 15:53:54 +0800</pubDate><description><![CDATA[摘要： AAF（抗混叠滤波）是一种用于Bayer RAW图像去马赛克前的预处理技术，旨在抑制高频信号混叠导致的伪彩色问题。其核心原理是通过低通滤波器（5×5核，同色像素加权平均）主动模糊超出传感器奈奎斯特频率的细密纹理（如格子衫、百叶窗），避免算法因采样不足产生颜色失真。滤波器设计需保证仅对同色像素操作（偶数位置系数为0），避免通道间混叠。Python实现中利用scipy.ndimage.correlate高效完成卷积，测试显示AAF能有效平滑图像噪声（方差减小）。虽然牺牲部分锐度，但显著提升了颜色还原的准]]></description><category></category></item><item><title><![CDATA[openISP学习2-DPC(黑电平补偿)和BLC(黑电平补偿)]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161748137</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161748137</guid><author>armwind</author><pubDate>Sat, 06 Jun 2026 14:52:29 +0800</pubDate><description><![CDATA[本文介绍了坏点校正（DPC）算法，用于修复图像传感器中的异常像素。算法通过比较待检测像素与4x4邻域内同色像素的差值来识别坏点，提供两种修复模式：mean模式取4个直接邻居的均值替换坏点；gradient模式则计算4个方向的梯度，选取最小梯度方向的两邻均值进行替换。文章给出了DPC算法的Python实现代码，并通过测试案例展示了两种模式对人工构造的坏点（中心像素值为0）的修复效果，mean模式使坏点恢复为周围均值，gradient模式则根据最小梯度方向进行修复。测试结果验证了算法的有效性，能有效消除图像中的]]></description><category></category></item><item><title><![CDATA[openISP学习1-openISP介绍]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161738529</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161738529</guid><author>armwind</author><pubDate>Sat, 06 Jun 2026 10:19:28 +0800</pubDate><description><![CDATA[OpenISP是一个开源图像信号处理器（ISP）项目，支持RAW、RGB、YUV等色彩空间的转换和处理。文章首先介绍了常见的图像色彩空间，包括Bayer阵列（如RGGB）、RGB和YUV，并解释了它们之间的转换原理（如Demosaic去马赛克、色度下采样等）。随后详细解析了OpenISP的处理流程（Pipeline），涵盖从RAW域预处理（DPC、BLC）、RGB域处理（CCM、Gamma校正）到YUV域后处理（降噪、边缘增强）的完整链路。文章还对比了实际案例（森云星光相机）的ISP技术，补充了LDC、3A]]></description><category></category></item><item><title><![CDATA[数字图像处理-13-图像频域变换数学基础之快速傅里叶变换]]></title><link>https://blog.youkuaiyun.com/armwind/article/details/161567333</link><guid>https://blog.youkuaiyun.com/armwind/article/details/161567333</guid><author>armwind</author><pubDate>Sun, 31 May 2026 16:04:56 +0800</pubDate><description><![CDATA[本文介绍了快速傅里叶变换（FFT）及其逆变换（IFFT）的Python实现方法，包括一维和二维情况，并简要说明了一维离散余弦变换（DCT）的原理。 主要内容： 一维FFT实现：基于Cooley-Tukey时域抽取算法，通过位倒序排列和分治策略将复杂度降至O(N log N) 一维IFFT实现：利用共轭对称性，通过调用正向FFT实现逆变换 二维FFT实现：利用可分离性，通过行列方向分别进行一维FFT实现 二维IFFT实现：类似二维FFT，行列方向分别进行一维IFFT 一维DCT原理：通过余弦基函数展开实数信号]]></description><category></category></item></channel></rss>