<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_43663263的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_43663263</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_43663263]]></copyright><item><title><![CDATA[INT8 量化为什么不准：五组实测拆解误差的四个来源]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/165122477</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/165122477</guid><author>qq_43663263</author><pubDate>Mon, 14 Sep 2026 10:00:00 +0800</pubDate><description><![CDATA[把模型从 FP32 压到 INT8，精度掉了 3 个点该调哪里？多数人第一反应是去折腾校准策略，但实测结论相反：量化粒度（per-channel）值 +10 dB，而百分位裁剪只值 0.3 dB、选错还能崩 18 dB。本文用 5 组零依赖可复现实验，拆开 INT8 量化的四个误差来源——粒度、校准、累加器溢出、舍入——并给出一张收益排行榜与"哪些层不能量化"的判断依据，最后接回《组成原理》的定点数与 IEEE 754 舍入。
]]></description><category></category></item><item><title><![CDATA[从磁盘到网卡：sendfile 零拷贝到底省了什么]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/165122848</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/165122848</guid><author>qq_43663263</author><pubDate>Mon, 14 Sep 2026 09:00:00 +0800</pubDate><description><![CDATA[发一个文件到网络，最直觉的 read()+write() 让同一份数据在内存里被搬了 4 趟（2 次 DMA + 2 次 CPU 拷贝）。本文用一张数据通路图讲清这 4 趟分别在数什么——页缓存、copy_to_user、copy_from_user、DMA——再用 sendfile 零拷贝把它砍到 2 次 DMA、用户态 0 字节经手；并附本机实测（256MB 文件，mmap vs read 零拷贝吞吐 2.02x、少经手 256MB CPU 拷贝）。]]></description><category></category></item><item><title><![CDATA[分支覆盖率 80% 意味着什么：从插桩原理到 gcov / llvm-cov 数据流]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/165122150</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/165122150</guid><author>qq_43663263</author><pubDate>Mon, 14 Sep 2026 09:00:00 +0800</pubDate><description><![CDATA[你的覆盖率门禁看的是行覆盖还是分支覆盖？同一个 3 行函数，行覆盖 100% 时分支覆盖只有 50%。本文从编译器插桩原理讲起——每个基本块塞一个 i64 计数器，运行时 +1——用 gcov / llvm-cov 双链路实测，并贴出 LLVM IR 里的计数器数组，告诉你「80% 分支覆盖率」到底意味着什么：每 100 个分支出口还有 20 个从未走过，而那 20% 恰好是最容易出 bug 的错误处理与边界路径。
]]></description><category></category></item><item><title><![CDATA[改一行代码要重编三分钟？ccache 到底在缓存什么]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/165121834</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/165121834</guid><author>qq_43663263</author><pubDate>Sat, 12 Sep 2026 16:52:09 +0800</pubDate><description><![CDATA[改一行代码要重编三分钟？这钱大多花在"不敢跳过"上。本文用 200 行可运行代码复刻 ccache 的核心机制：先 g++ -E 做预处理拿到真实文本，再用 FNV-1a 给"预处理结果+编译选项"算内容指纹，命中就直接复制缓存的 .o。五个场景实测带你看出——干净构建全 MISS、再构建全 HIT、改头文件触发全量级联、换编译选项必 MISS。顺便拆开构建系统的两级缓存（mtime 快筛 → 内容指纹精筛）为什么 mtime 不可靠、为什么指纹才能跨机器命中。]]></description><category></category></item><item><title><![CDATA[从写代码到看 CPU：一条赋值语句在硬件里走了多远？（数据通路通俗版）]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/165121417</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/165121417</guid><author>qq_43663263</author><pubDate>Sat, 12 Sep 2026 16:35:52 +0800</pubDate><description><![CDATA[一行 a = a + 1，从你按下保存到内存里真的变成 a+1，中间要跨过至少 6 层抽象、经过几十个硬件单元。本文把它拆到晶体管之上、汇编之下，用 objdump/perf 实锤看它在 CPU 数据通路里走了多远，以及这和你写的每一行代码有什么关系。]]></description><category></category></item><item><title><![CDATA[从 Cache 局部性看 stride 对齐：为什么逐行扫描能快好几倍]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/164342167</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/164342167</guid><author>qq_43663263</author><pubDate>Fri, 04 Sep 2026 09:00:00 +0800</pubDate><description><![CDATA[同一段求和代码，只因遍历顺序从逐行改成逐列，一张 8192×8192 的图像就慢了 50 倍。本文用实测拆开 cache line 64 字节的秘密——"搬一次用 64 次"和"搬一次用 1 次"的差距，并给出 tiling 分块、stride 对齐、伪共享三个实测解法。]]></description><category></category></item><item><title><![CDATA[C++ 实时图像滤镜的内存陷阱：一次多余的分配，让每帧多花 31.6 MiB]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/164306552</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/164306552</guid><author>qq_43663263</author><pubDate>Thu, 03 Sep 2026 01:27:58 +0800</pubDate><description><![CDATA[实时图像处理最常见的内存坑不是泄漏，是每帧多分配一张 4K 图。本文用可复现 demo + 实测数据讲清：清零成本、calloc 误区、早返回为什么才是大头，以及它背后的虚拟内存原理。]]></description><category></category></item><item><title><![CDATA[C++实现已知一点求平行于某一直线且距离为d的直线]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/131334834</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/131334834</guid><author>qq_43663263</author><pubDate>Thu, 22 Jun 2023 13:44:10 +0800</pubDate><description><![CDATA[【代码】C++实现已知一点求平行于某一直线且距离为d的直线。]]></description><category></category></item><item><title><![CDATA[C++实现计算多边形面积]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/131334684</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/131334684</guid><author>qq_43663263</author><pubDate>Thu, 22 Jun 2023 13:43:46 +0800</pubDate><description><![CDATA[【代码】C++实现计算多边形面积。]]></description><category></category></item><item><title><![CDATA[C++实现两点确定一条直线公式]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/131298718</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/131298718</guid><author>qq_43663263</author><pubDate>Tue, 20 Jun 2023 04:23:53 +0800</pubDate><description><![CDATA[【代码】C++实现两点确定一条直线公式。]]></description><category></category></item><item><title><![CDATA[数字图像处理Matlab实验集合（厦门理工学院）]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/118088290</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/118088290</guid><author>qq_43663263</author><pubDate>Thu, 24 Jun 2021 10:24:33 +0800</pubDate><description><![CDATA[实验一：图像处理基础
1、图像的放大、缩小
2、图像灰度级的增加、减少
3、图像的求平均、减法求前景、乘法求感兴趣区域、旋转
实验二：灰度变换与空间滤波
1、点处理：灰度值反转、对数变换、伽马变换
2、直方图处理：计算直方图、直方图均衡化
3、平滑滤波：均值滤波、中值滤波
4、锐化滤波：Sobel算子、Canny算子、拉普拉斯算子
实验三：图像复原与重建
1、空间域复原
（1）产生高斯噪声和脉冲噪声的图片
（2）用中值滤波器、均值滤波器、维纳滤波处理上面的噪声图片
2、频率域复原
（1）产生周期噪声的图像
]]></description><category></category></item><item><title><![CDATA[数字图像处理学习笔记（二十）使用课本445页公式8.68实现简单的可见水印]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/118088229</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/118088229</guid><author>qq_43663263</author><pubDate>Tue, 22 Jun 2021 08:52:37 +0800</pubDate><description><![CDATA[实验截图：

添加水印后的图：


实验代码：
img = imread('paimeng.jpg');
img_water = imread('shuiyin.png');
img_water = imresize(img_water ,[64 128]);%调整水印大小
ratio = 0.5;%调整水印透明程度
[m,n] = size(img);%得到原图高、宽、通道数
[m_water,n_water,c_water] = size(img_water);%得到水印图高、宽、通道数
x = uin]]></description><category></category></item><item><title><![CDATA[数字图像处理学习笔记（十九）研究系数的阈值对图像质量、压缩率的影响]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/118088187</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/118088187</guid><author>qq_43663263</author><pubDate>Tue, 22 Jun 2021 08:50:53 +0800</pubDate><description><![CDATA[实验截图：


原图与其DCT系数图：



改变系数进行不同的DCT变换的结果



实验代码：
img=imread('erciyuan.jpg');
img=rgb2gray(img);
img=im2double(img);
matrix=dctmtx(8);
dct = blkproc(img, [8 8], 'P1 * x * P2', matrix, matrix');
figure(1);subplot(1,2,1);imshow(img);title('原图');
subplot(1,2,]]></description><category></category></item><item><title><![CDATA[数字图像处理学习笔记（十八）实现图像的离散余弦变换]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/118088130</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/118088130</guid><author>qq_43663263</author><pubDate>Tue, 22 Jun 2021 08:50:04 +0800</pubDate><description><![CDATA[实验截图：

自带函数实现的离散余弦变换：

利用公式求出的DCT和IDCT


实验代码：
代码（1）：
img=imread('erciyuan.jpg');
img=rgb2gray(img);
figure(1)
%显示原图像
subplot(1,3,1);imshow(img);title('原图')
%计算二维dct变换
img_cos=dct2(img)
subplot(1,3,2);
imshow(log(abs(img_cos)));
title('DCT离散余弦变换')
%把变换后的矩阵]]></description><category></category></item><item><title><![CDATA[数字图像处理学习笔记（十七）分割出彩色图像中的“蓝色”部分]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/118088080</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/118088080</guid><author>qq_43663263</author><pubDate>Tue, 22 Jun 2021 08:48:47 +0800</pubDate><description><![CDATA[实验截图：

RGB图中蓝色的分离：

实验代码：
I=imread('RGB.jpg');
[M N t]=size(I);
I1=I;
I2=I;
for i=1:M
    for j=1:N
        if I(i,j,1)&lt;80&amp;I(i,j,2)&lt;80&amp;I(i,j,3)&gt;200
            I1(i,j,1)=0;
            I1(i,j,2)=0;
            I1(i,j,3)=255;
            
 ]]></description><category></category></item><item><title><![CDATA[数字图像处理学习笔记（十六）在RGB色彩空间上实现边缘检测]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/118087881</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/118087881</guid><author>qq_43663263</author><pubDate>Tue, 22 Jun 2021 08:48:04 +0800</pubDate><description><![CDATA[实验截图：

RGB边缘检测：


实验代码：
I = imread('erciyuan.jpg'); 
img = rgb2gray(I);        
img = im2double(img);       
 
[m,n]=size(img);        
for i=3:m-2
    for j=3:n-2     
        % LoG算子粗提取图像边缘
        log_margin(i,j) = -img(i-2,j)-img(i-1,j-1)-2*img(i-1,j)-]]></description><category></category></item><item><title><![CDATA[数字图像处理学习笔记（十五）在RGB和HSI色彩空间上分别对彩色图像进行平滑、锐化]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/118087837</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/118087837</guid><author>qq_43663263</author><pubDate>Tue, 22 Jun 2021 08:47:34 +0800</pubDate><description><![CDATA[实验截图：

在RGB和HSI色彩空间上分别对彩色图像进行平滑、锐化：


实验代码：
rgb=imread('erciyuan.jpg');
 
r=rgb(:,:,1);
 
g=rgb(:,:,2);
 
b=rgb(:,:,3);
 
subplot(231);
 
imshow(rgb);
 
title('RGB原图');
 
m=fspecial('average');
 
r_filtered=imfilter(r,m);
 
g_filtered=imfilter(g,m);
 
b_fi]]></description><category></category></item><item><title><![CDATA[数字图像处理学习笔记（十四）实现RGB到HSI空间的转换]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/118087762</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/118087762</guid><author>qq_43663263</author><pubDate>Tue, 22 Jun 2021 08:46:57 +0800</pubDate><description><![CDATA[实验截图：

RGB到HSI空间转换后的图：


实验代码：
function hsi = rgb2hsi(rgb)
rgb = im2double(rgb);
 
R = rgb(:,:,1);%分离出R通道
G = rgb(:,:,2);%分离出G通道
B = rgb(:,:,3);%分离出B通道
%要计算出H的话，根据公式我们需要先算出θ角度
num = ((R - G) + (R - B))/2.0;%计算公式的上半部分
den = sqrt((R - G).^2 + (R - B).*(G - B]]></description><category></category></item><item><title><![CDATA[数字图像处理学习笔记（十三）用快速傅里叶变换和高斯滤波器实现图像锐化（高通滤波）]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/118087063</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/118087063</guid><author>qq_43663263</author><pubDate>Tue, 22 Jun 2021 08:44:41 +0800</pubDate><description><![CDATA[实验截图：

高斯高通滤波处理后的图:


实验代码：
img = imread('erciyuan.jpg');
img = rgb2gray(img);
d0 = 10;%我们设定的阈值
img_noise = imnoise(img,'gaussian');%加入高斯噪声
img_fft = fftshift(fft2(double(img_noise)));%傅里叶变换得到频谱
[m,n] = size(img_fft);
m_mid = round(m/2);%原图像高的一半 用于得到中心点坐标
]]></description><category></category></item><item><title><![CDATA[数字图像处理学习笔记（十二）快速傅里叶变换和高斯滤波器实现图像模糊（低通滤波）]]></title><link>https://blog.youkuaiyun.com/qq_43663263/article/details/118087016</link><guid>https://blog.youkuaiyun.com/qq_43663263/article/details/118087016</guid><author>qq_43663263</author><pubDate>Tue, 22 Jun 2021 08:43:33 +0800</pubDate><description><![CDATA[实验截图：

低通滤波实现图像模糊


实验代码：
img = imread('erciyuan.jpg');
img = rgb2gray(img);
d0 = 80;%我们设定的阈值
img_noise = imnoise(img,'gaussian');%加入高斯噪声
img_fft = fftshift(fft2(double(img_noise))); %傅里叶变换得到频谱
[m,n] = size(img_fft);
m_mid = floor(m/2);%原图像高的一半 用于得到中心点坐标
n]]></description><category></category></item></channel></rss>