阿贝成像与空间滤波:MATLAB 4f系统仿真避坑指南
简介这份资源围绕阿贝成像与空间滤波的MATLAB实现展开面向学习傅里叶光学、信息光学课程或从事光学图像处理实验的本科生、研究生及工程技术人员帮助其用空间频谱语言理解物光场结构并通过主动改变物频谱获得期望的像。包内共6个文件全部为m脚本压缩包约4KB涵盖主程序、滤波函数、卷积运算及正反傅里叶变换等模块便于在MATLAB中直接运行与修改。资源以4f光学系统分析一维矩形光栅为背景重点绘制只有0级、0与±1级通过时的光栅像分布以及去掉0级空间频率后的像分布直观展示空间滤波对成像结果的影响。已有1935人学习下载适合作为课堂实验的参考代码与频谱分析练习素材读者可借此掌握傅里叶变换、频域滤波与图像重建的完整流程并在此基础上扩展二维光栅或自定义滤波器的仿真实验。1. 阿贝成像与空间滤波为什么你的4f系统仿真总在第二步翻车阿贝成像及空间滤波的 MATLAB 实现本质上是把傅里叶光学里最经典的一条链路——物平面→傅里叶变换→频谱面滤波→逆变换→像平面——用数值方法完整跑一遍。很多人第一次接触这个题目以为就是调用两次fft2和ifft2结果仿真出来的像要么全黑要么滤波前后毫无区别要么边缘出现莫名其妙的条纹。问题不在 FFT 本身而在于你有没有真正理解阿贝成像的物理前提照明光必须是相干光频谱面必须精确对应透镜后焦面滤波器的空间尺度必须和归一化频率坐标对齐。这套方法能解决什么问题最直接的是让你在不上实验台的情况下验证低通、高通、方向滤波、相位衬度等空间滤波方案的效果快速迭代参数。适合两类人一类是光学课程需要交仿真作业的学生另一类是做图像处理时想从频域角度理解滤波本质的工程师。MATLAB 的优势在于矩阵运算天然匹配傅里叶光学的离散化模型但坑也在这里——物理坐标和数组索引之间的映射关系一旦搞错后面全盘皆输。2. 从物函数到频谱面阿贝成像的数值链路怎么搭2.1 为什么必须用相干光照明模型阿贝成像理论的核心前提是相干照明。在相干光下物平面的复振幅透过率函数 $U_0(x,y)$ 经过透镜后在频谱面得到其傅里叶变换 $U_f(f_x,f_y)$频谱面上的滤波器 $H(f_x,f_y)$ 对频谱进行调制再经过一次逆变换得到像平面的复振幅分布。整个过程是线性的、确定性的没有强度叠加带来的交叉项。如果换成非相干照明强度是线性叠加的傅里叶变换作用于强度而非复振幅整个仿真模型要重写。很多初学者拿一张普通灰度图当物函数直接做 FFT然后疑惑为什么滤波结果和预期不符——因为那张灰度图是强度分布不是复振幅透过率。正确做法是把灰度图归一化到 [0,1] 后当作振幅透过率相位设为常数通常为零构造复数矩阵。% 构造物函数灰度图作为振幅透过率相位设为零 img imread(test_pattern.png); img im2double(rgb2gray(img)); % 归一化到 [0,1] U0 img .* exp(1i * 0); % 复振幅振幅为img相位为0这里im2double把 uint8 转成 [0,1] 的 doubleexp(1i*0)看起来多余但写成这样是为了提醒自己如果以后要加相位物体比如相位光栅只需要改相位项即可。物函数的尺寸建议取 512×512 或 1024×1024太小会导致频谱分辨率不够太大则计算慢且频谱面上滤波器坐标不好对齐。2.2 傅里叶变换与频谱坐标的物理映射MATLAB 的fft2输出的频谱零频在数组的左上角1,1位置而物理上我们习惯零频在中心。所以第一步是fftshift把零频移到中心。但更重要的是数组索引和物理频率之间的对应关系。假设物面采样点数为 $N \times N$物面物理尺寸为 $L \times L$则采样间隔 $dx L/N$。频谱面的频率分辨率 $df 1/L$频率范围从 $-1/(2dx)$ 到 $1/(2dx) - df$。在fftshift之后数组的中心索引对应零频第 $j$ 列对应的频率为 $(j - N/2 - 1) \cdot df$。N 512; L 10e-3; % 物面尺寸 10mm dx L / N; % 采样间隔 df 1 / L; % 频率分辨率 U0 ...; % 前面构造的物函数 Uf fftshift(fft2(fftshift(U0))); % 频谱零频居中 % 构造频率坐标轴 fx (-N/2 : N/2-1) * df; [FX, FY] meshgrid(fx, fx);注意这里用了两次fftshift一次在fft2之前把物函数零频移到中心对于大多数物函数零频在中心意味着物函数本身居中一次在fft2之后把频谱零频移到中心。如果物函数本身不是居中的第一次fftshift可以省略但后续滤波器的中心位置要相应调整。我一般建议物函数居中放置这样频谱和滤波器的坐标系统一不容易出错。2.3 频谱面滤波器的构造方法滤波器就是一个和频谱同尺寸的矩阵值在 [0,1] 之间理想滤波器或连续变化比如高斯滤波器。低通滤波器保留中心低频高通滤波器抑制中心低频。以圆形低通为例截止频率为 $f_c$fc 20 * df; % 截止频率取20个频率单位 R sqrt(FX.^2 FY.^2); % 径向频率 H_lowpass double(R fc); % 理想低通 H_highpass double(R fc); % 理想高通double(R fc)利用逻辑判断生成 0/1 矩阵简洁高效。但理想滤波器在空间域会产生振铃效应Gibbs 现象实际中更常用高斯滤波器sigma_f 15 * df; H_gauss_low exp(-R.^2 / (2 * sigma_f^2)); H_gauss_high 1 - H_gauss_low;方向滤波可以用扇形区域或者对特定方向做抑制。比如只保留水平方向的频谱theta atan2(FY, FX); H_directional double(abs(theta) pi/8 | abs(theta) 7*pi/8);滤波后的频谱为Uf_filtered Uf .* H然后做逆变换回到空间域U_image fftshift(ifft2(fftshift(Uf_filtered))); I_image abs(U_image).^2; % 像面强度这里同样注意fftshift的配对使用。逆变换之后得到的是复振幅取模平方得到强度这才是最终能显示的图像。3. 把仿真跑起来完整脚本与参数调节实战3.1 一份可直接运行的完整 MATLAB 脚本下面这份脚本把前面的步骤串起来物函数用一个简单的矩形光栅加圆孔方便观察滤波效果。%% 阿贝成像与空间滤波完整仿真 clear; close all; clc; % ---- 参数设置 ---- N 512; % 采样点数 L 10e-3; % 物面物理尺寸 (m) dx L / N; % 采样间隔 df 1 / L; % 频率分辨率 % ---- 构造物函数矩形光栅 圆孔 ---- x (-N/2 : N/2-1) * dx; [X, Y] meshgrid(x, x); grating 0.5 0.5 * cos(2*pi*X/(0.5e-3)); % 周期0.5mm的光栅 aperture double(sqrt(X.^2 Y.^2) 2e-3); % 半径2mm圆孔 U0 grating .* aperture; U0 U0 / max(abs(U0(:))); % 归一化 % ---- 傅里叶变换到频谱面 ---- Uf fftshift(fft2(fftshift(U0))); % ---- 频率坐标 ---- fx (-N/2 : N/2-1) * df; [FX, FY] meshgrid(fx, fx); R sqrt(FX.^2 FY.^2); % ---- 构造滤波器 ---- fc 30 * df; % 截止频率 H_low exp(-R.^2 / (2*(fc/2)^2)); % 高斯低通 H_high 1 - H_low; % 高斯高通 % ---- 滤波与逆变换 ---- U_low fftshift(ifft2(fftshift(Uf .* H_low))); U_high fftshift(ifft2(fftshift(Uf .* H_high))); I_low abs(U_low).^2; I_high abs(U_high).^2; % ---- 显示结果 ---- figure(Position, [100 100 1200 800]); subplot(2,3,1); imshow(U0, []); title(物函数 (振幅)); subplot(2,3,2); imshow(log(1abs(Uf)), []); title(频谱 (对数)); subplot(2,3,3); imshow(H_low, []); title(低通滤波器); subplot(2,3,4); imshow(I_low, []); title(低通滤波后像); subplot(2,3,5); imshow(H_high, []); title(高通滤波器); subplot(2,3,6); imshow(I_high, []); title(高通滤波后像);运行后你会看到低通滤波后的像保留了光栅的大尺度结构但边缘变模糊高通滤波后的像突出了光栅的边缘和圆孔边界但整体亮度偏暗。这是符合预期的。3.2 截止频率和滤波器类型怎么选截止频率 $f_c$ 是空间滤波里最关键的参数。选得太小低通后什么都看不见选得太大低通和高通结果几乎一样。一个经验法则先看频谱图找到能量集中的区域半径$f_c$ 取那个半径的 1.5 到 2 倍作为低通截止取 0.5 到 0.8 倍作为高通起点。滤波器类型的选择取决于你想提取什么特征。理想滤波器适合教学演示因为边界清晰高斯滤波器适合实际处理因为不会引入振铃巴特沃斯滤波器介于两者之间阶数可调。下面这张表对比了三种低通滤波器在相同截止频率下的表现滤波器类型数学形式优点缺点理想低通$H 1, R \leq f_c$概念清晰截止锐利振铃明显高斯低通$H \exp(-R^2/2\sigma^2)$无振铃平滑截止不锐利巴特沃斯低通$H 1/(1(R/f_c)^{2n})$阶数可调折中参数多一个在 MATLAB 里实现巴特沃斯低通只需要改一行n 2; % 阶数 H_butter 1 ./ (1 (R / fc).^(2*n));阶数 $n$ 越大越接近理想滤波器振铃也越明显。我一般从 $n2$ 开始试效果不够再往上加。3.3 从仿真结果反推实验参数仿真的价值在于指导实验。如果你要在实际光路中搭建 4f 系统仿真里的 $f_c$ 需要换算成频谱面上的物理尺寸。频谱面上频率 $f_x$ 对应的物理位置为 $x_f \lambda f f_x$其中 $\lambda$ 是激光波长$f$ 是透镜焦距。假设 $\lambda 632.8$ nm$f 200$ mm$f_c 30 \times df 30/L 3000$ m$^{-1}$则 $x_f 632.8 \times 10^{-9} \times 0.2 \times 3000 \approx 0.38$ mm。也就是说你需要在频谱面中心放一个半径约 0.38 mm 的圆孔来实现低通。这个换算关系是连接仿真和实验的桥梁很多人在这一步卡住因为仿真里的频率单位和实验里的长度单位没有建立起对应。4. 避坑指南阿贝成像仿真中最容易翻车的五个地方4.1 频谱全黑或者全白现象imshow(log(1abs(Uf)), [])显示出来要么一片黑要么一片白看不到任何结构。原因最常见的是物函数没有归一化或者归一化过头。如果U0的值全部接近零频谱自然全黑如果U0里有 Inf 或 NaN频谱会异常。另一个原因是fftshift用错位置导致零频不在中心log显示时动态范围被压缩。解决在 FFT 之前强制检查U0的数值范围用U0 U0 / max(abs(U0(:)))归一化到 [0,1]。显示频谱时用log(1abs(Uf))而不是abs(Uf)因为频谱的动态范围通常跨越好几个数量级。如果还是不对单独显示abs(Uf)并检查最大值的位置是否在中心。4.2 滤波前后图像完全一样现象加了滤波器但输出图像和输入图像肉眼看不出区别。原因滤波器的截止频率设得太大几乎覆盖了整个频谱。比如fc 1000 * df而频谱的有效范围只有N/2 * df 256 * df那滤波器相当于全通。另一个可能是滤波器矩阵和频谱矩阵尺寸不匹配MATLAB 自动广播导致逐元素乘法出错但不报错。解决先显示滤波器矩阵imshow(H, [])确认它确实在遮挡一部分频谱。然后检查size(H)和size(Uf)是否一致。截止频率建议从10*df开始试逐步增大观察图像变化。4.3 逆变换后图像出现条纹或重影现象滤波后的图像上出现周期性条纹或者物函数的图案出现重影。原因fftshift和ifft2的配对使用错误。正确的顺序是fftshift(ifft2(fftshift(Uf_filtered)))如果少了一层fftshift逆变换的零频位置会偏移导致空间域出现线性相位表现为条纹。另一个原因是物函数本身没有居中FFT 之后频谱的相位包含了位移信息滤波时如果破坏了相位对称性逆变换就会出现重影。解决严格配对fftshift。建议写一个辅助函数封装正向和逆向变换避免每次手动写错。物函数尽量居中放置可以用fftshift把物函数移到中心再计算。4.4 高通滤波后图像几乎全黑现象高通滤波后的图像只有边缘隐约可见整体亮度极低。原因高通滤波器抑制了零频和低频分量而自然图像的能量主要集中在低频。如果物函数的直流分量占比很大高通后剩下的高频能量很少显示时动态范围不够。解决显示时用imshow(I_high, [])让 MATLAB 自动拉伸对比度或者手动做对数变换imshow(log(1I_high), [])。如果要做定量分析可以对高通后的图像做归一化。另外高通滤波本来就会让图像变暗这是正常现象不是 bug。4.5 频率坐标和滤波器半径对不上现象明明设了截止频率fc 20*df但滤波器看起来只遮住了中心很小一块或者遮住了几乎整个频谱。原因频率坐标fx的定义和fftshift之后的数组索引没有对齐。fftshift之后数组的第N/21个元素对应零频但fx (-N/2 : N/2-1)*df的第N/21个元素是0这没问题。问题出在meshgrid的顺序[FX, FY] meshgrid(fx, fx)中FX沿列方向变化FY沿行方向变化而fftshift之后的行列对应关系需要确认。解决在构造滤波器之前先显示FX和FY的零值位置确认它们和频谱中心对齐。一个简单的检查方法是find(FX0)和find(FY0)的交点应该对应频谱矩阵的中心索引。如果不一致调整meshgrid的参数顺序或者转置。5. 进阶技巧用相位恢复和叠层成像思路验证滤波结果5.1 从强度图反推相位Gerchberg-Saxton 迭代的引入前面做的都是已知物函数、正向计算像面强度。但实际实验中探测器只能记录强度相位信息丢失了。如果你想从像面强度反推物函数就需要相位恢复算法。Gerchberg-SaxtonGS迭代是最经典的一种已知物面和像面的强度约束交替投影到这两个平面上每次用测得的强度替换计算得到的振幅保留计算得到的相位。在阿贝成像的框架下GS 迭代可以这样实现% GS 迭代已知物面强度 I_obj 和像面强度 I_img U_obj sqrt(I_obj); % 初始猜测物面振幅为 sqrt(I_obj)相位为零 for iter 1:100 % 正向传播到频谱面 Uf fftshift(fft2(fftshift(U_obj))); % 施加滤波器约束如果有 Uf Uf .* H; % 逆变换到像面 U_img fftshift(ifft2(fftshift(Uf))); % 像面强度约束替换振幅保留相位 U_img sqrt(I_img) .* exp(1i * angle(U_img)); % 反向传播回物面 Uf_back fftshift(fft2(fftshift(U_img))); Uf_back Uf_back .* H; % 再次施加滤波器如果滤波器是实对称的 U_obj fftshift(ifft2(fftshift(Uf_back))); % 物面强度约束 U_obj sqrt(I_obj) .* exp(1i * angle(U_obj)); % 计算误差 err(iter) sum(sum(abs(abs(U_obj) - sqrt(I_obj)).^2)); end这段代码的关键在于每次在物面和像面之间切换时都用已知的强度替换计算得到的振幅但保留相位。迭代收敛后angle(U_obj)就是恢复出来的物函数相位。如果你的物函数是纯振幅物体相位为零GS 迭代会很快收敛如果是相位物体收敛速度取决于初始猜测和约束的强度。5.2 用叠层成像思路提高频谱采样率阿贝成像的仿真中频谱面的采样率由物面尺寸决定$df 1/L$。如果物面尺寸小频谱采样就稀疏滤波器的边界会很不平滑。叠层成像ptychography的思路是用多个不同位置的照明光斑照射物体每次采集一幅衍射图然后在频域把这些数据拼接起来等效于增大了数值孔径提高了频谱采样率。在 MATLAB 里模拟这个思路可以这样做把物函数分成多个重叠的子区域每个子区域做 FFT 得到子频谱然后把这些子频谱按照对应的频率偏移拼接到一个更大的频谱矩阵中。拼接时要注意相位对齐否则会出现拼接缝。% 叠层成像频谱拼接示意 num_probes 9; % 9个照明位置 overlap 0.5; % 重叠率 U_spectrum_big zeros(2*N, 2*N); % 更大的频谱矩阵 for p 1:num_probes % 提取子区域这里简化处理实际需要根据探针位置计算 sub_U U0(...); % 子区域物函数 sub_Uf fftshift(fft2(fftshift(sub_U))); % 计算子频谱在大频谱中的位置偏移 offset_x ...; % 根据探针位置计算 offset_y ...; % 拼接需要相位对齐 U_spectrum_big(...) sub_Uf; end这个思路的价值在于它突破了单次成像中物面尺寸对频谱分辨率的限制。实际叠层成像实验中重建算法比这个复杂得多但核心思想就是频域拼接。如果你在仿真中想验证某个滤波器的精细效果但受限于N512的频谱分辨率可以试试这个思路。5.3 一个我常用的验证习惯每次做完滤波仿真我都会做一件事把滤波后的频谱和滤波前的频谱放在一起显示用imshow(log(1abs(Uf)), [])和imshow(log(1abs(Uf_filtered)), [])对比。如果滤波器确实起作用了两张图的能量分布应该有明显差异。然后我会检查滤波器的中心是否和频谱中心对齐——用find(Hmax(H(:)))找到滤波器最大值的位置和N/21比较。这个习惯帮我省了很多次重新跑仿真的时间因为大部分错误在频谱对比这一步就能发现不用等到看最终图像。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

如何在Linux服务器上安装Bluehood:从Python环境到systemd常驻服务的保姆级教程

如何在Linux服务器上安装Bluehood:从Python环境到systemd常驻服务的保姆级教程

【免费下载链接】bluehood Monitor your local neighbourhoods bluetooth activity 项目地址: https://gitcode.com/gh_mirrors/bl/bluehood 点击查看 免费下载 Bluehood 是一款运行在 Linux 服务器上的蓝牙邻居监控工具,通过被动扫描周围的 BLE 设备来…

2026/10/13 15:49:53 阅读更多 →
TreeView测试程序:构建可断言的状态机级可靠性验证体系

TreeView测试程序:构建可断言的状态机级可靠性验证体系

简介:这是一份面向VB初学者与界面控件实践者的TreeView控件专项测试程序,聚焦于层次化数据展示与交互逻辑的掌握,解决学习者在动态构建树形结构、响应节点事件及实现增删改查等核心操作时的实操难点。资源共20个文件,包含4个关键窗…

2026/10/13 15:49:53 阅读更多 →
你用AI的方式,决定了你能拿走多少:从提示词工程到人机协作实战

你用AI的方式,决定了你能拿走多少:从提示词工程到人机协作实战

你用AI的方式,决定了你能拿走多少最近跟几个做业务的朋友聊天,发现一个挺有意思的现象:同样的AI工具,有人用它把方案撰写时间从两天压缩到两小时,有人却还在抱怨AI写出来的东西“不能直接用”。这两拨人用的模型一样、…

2026/10/13 15:49:53 阅读更多 →

最新新闻

Rust性能优化实战:五个技巧榨干硬件性能

Rust性能优化实战:五个技巧榨干硬件性能

很多人聊 Rust 性能优化,第一反应是“这语言天生就快,还用得着调?”我最初也这么想,直到接手一个用 Rust 写的日志处理服务,在单机 8 核上处理一千万条日志要跑十几秒,调完之后压缩到两秒出头,C…

2026/10/13 16:37:10 阅读更多 →
5G智慧校园解决方案:云网端架构、专网组网与评审避坑指南

5G智慧校园解决方案:云网端架构、专网组网与评审避坑指南

简介:这份PPT围绕5G智慧校园解决方案展开,面向教育信息化管理者、智慧校园规划人员及行业方案设计师,系统梳理了教育信息化从1.0“三通两平台”迈向2.0“三全两高一大”的政策背景与现实需求,并针对教学质量提升、资源优质共享、校…

2026/10/13 16:37:10 阅读更多 →
Python声纹识别实战:EcapaTdnn/ResNetSE等四大模型对比与工业部署

Python声纹识别实战:EcapaTdnn/ResNetSE等四大模型对比与工业部署

简介:本资源是一套基于PaddlePaddle实现的声纹识别系统完整工程,面向人工智能方向的学习者、语音算法初学者及高校课程设计实践者,聚焦于说话人身份验证这一典型生物特征识别任务。项目集成EcapaTdnn、ResNetSE、ERes2Net、CAM等前沿模型&…

2026/10/13 16:37:09 阅读更多 →
Rust性能优化五技巧:数据结构、内存分配与缓存友好

Rust性能优化五技巧:数据结构、内存分配与缓存友好

Rust 的性能优化,说起来很有意思。大家选 Rust 多半是冲着性能来的,但真正把程序写出来之后,你会发现“能跑”和“跑得快”之间还有很长一段路。我早期做 Rust 项目时也走过弯路,一度以为堆一些 unsafe 代码、换更高级的算法就是优…

2026/10/13 16:37:09 阅读更多 →
开源大模型本地部署四件套:环境配置、私有部署、LoRA微调与LangChain接入

开源大模型本地部署四件套:环境配置、私有部署、LoRA微调与LangChain接入

简介:本资源是一套面向AI工程师与大模型应用开发者的开源大模型全栈实践工具包,聚焦环境配置、私有化部署、LoRA微调及LangChain集成四大核心环节,助力开发者快速落地本地化大模型应用。压缩包共79个文件,涵盖45个Python脚本&…

2026/10/13 16:37:09 阅读更多 →
实习和校招到底在选什么?从简历到面试的完整求职指南

实习和校招到底在选什么?从简历到面试的完整求职指南

1. 实习和校招到底在选什么很多同学第一次接触实习和校招的时候,脑子里冒出来的第一个问题往往是“我该投哪家”“简历怎么写”“面试问什么”。这些问题当然重要,但如果只盯着这些操作层面的东西,很容易陷入一种“做了很多准备却始终不得要领…

2026/10/13 16:36:05 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →