HIT-计算建模 | 六次实验把我从随机模拟带到 RANSAC 和图像加密
计算建模这门课给我的感觉,是不断把现实问题拆成可以计算的对象。随机数、频率、图像、天气、噪声、线和离群点,原本都很具体;一旦进入代码,它们就要变成概率、矩阵、状态、阈值和误差。
这个仓库里有六组实验,从蒙特卡洛和 GMM-EM,到 Fourier/DCT、HMM、背景建模与去噪、图像分割与加密,再到最小二乘、RANSAC 和 DBSCAN。内容看起来很散,但它们都有一个共同点:先建立一个可计算的模型,再看这个模型在真实数据上会不会露出破绽。
仓库地址:HIT-Computational-Modeling-Labs。
实验一:随机模拟和 GMM,先接受结果不会完全一样
第一组实验从概率模拟、随机过程和 GMM-EM 开始。随机实验最容易让人产生不安:同一个脚本跑两次,结果可能不完全一样;采样次数少时,估计值会晃得更明显。
我以前会把这种变化当成“程序不稳定”,后来才理解,随机模拟本来就在用有限样本逼近某个分布。采样次数增多,结果通常更稳定,但不可能让随机性彻底消失。
GMM-EM 又把问题往前推了一步。模型要根据数据估计多个高斯成分,EM 过程会交替计算隐变量的责任度和更新参数。代码不算长,可每一步都要求我理解“当前参数在解释什么,下一轮为什么这样改”。
实验二:Fourier 和 DCT,图像换到频域以后还能看懂吗
第二组实验处理二维 Fourier、DCT、频率截断和图像缩放。空间域里的图像是一堆像素,换到频域以后,信息变成不同频率成分的组合。
第一次做频率截断时,我最关心的是图像会不会直接坏掉。结果发现,保留低频成分以后,图像仍然能看出大致轮廓,只是细节开始丢失。原来图像的结构并不是平均分布在每个像素里,轮廓、变化和纹理在频域里有自己的位置。
这个实验让我开始把“压缩”理解成一种取舍:不是简单删掉数据,而是判断哪些信息对整体结构更重要。
实验三:HMM,天气和活动之间藏着一个看不见的状态
HMM 实验用天气和活动来解释隐藏状态。天气本身不是每次都能直接观察到,但活动序列可以作为线索。代码里有前向概率、Viterbi 和根据状态生成观测的过程。
我最喜欢 Viterbi 的地方,是它不是只问“当前最可能是什么”,而是在连续观测中寻找一条整体概率更高的状态路径。单独看一天的活动可能有多种解释,放到整段序列里,前后关系会帮助模型排除一些看似合理的选择。
这次实验让我第一次比较清楚地看到,模型不仅在处理数据,还在利用数据之间的时间结构。
实验四:背景建模、去噪和指标,图像处理不只是看起来更干净
第四组实验包含 MOG2 背景建模、快速中值滤波和指标记录。去噪以前在我脑中很直观:把图像变得更平滑、更好看。真正加入指标以后,问题变成了去掉噪声的同时有没有把细节也抹掉。
中值滤波对椒盐噪声有效,但窗口太大可能让边缘变模糊;背景建模需要观察像素随时间的变化,不是简单地拿一张背景图做减法。实验结果表把直觉变成了可比较的数据,也提醒我“看起来更好”不一定等于误差更小。
实验五:OTSU、半色调、置乱和图像加密,图像也可以被重新排列
第五组实验把多个小主题放在了一起。OTSU 通过灰度直方图寻找类间方差更大的阈值,把灰度图变成二值图;半色调把连续灰度转换成点阵效果;图像置乱则把图像补成等大小块,再用参数对块进行重新排列。
置乱实验很有意思,因为它看起来像“图像坏掉了”,实际上只是像素块的位置被改了。如果参数、块大小和逆操作没有对应好,恢复出来的图像就会变形。
图像加密实验里还比较了 XOR 和取模加法,并计算图像熵。熵不是一句“看起来很乱”的主观评价,而是试图用数字描述像素分布的不确定性。它让我意识到,很多视觉效果都应该有一个可以讨论的量化指标。
实验六:最小二乘和 RANSAC,面对离群点别太相信平均
最后一组实验做最小二乘、RANSAC 和平行直线聚类。最小二乘会尽量让整体误差变小,但如果数据里混进一些离群点,少数异常值可能会拉动拟合结果。
RANSAC 的思路更像是在数据里反复抽样,寻找一组能够被大多数点支持的模型。它不要求所有点都乖乖服从同一条线,而是允许一部分点明显不合群。
这次实验给我最大的感受是,真实数据往往不干净。一个模型如果只在理想样本上表现好,不代表它能处理现实世界。鲁棒拟合的价值就在于,它开始认真考虑“有些数据可能就是不可靠的”。
六组实验放在一起,我看到的是一条从随机到鲁棒的路线
GMM-EM 让我面对概率和隐变量;Fourier/DCT 让我换一个空间看图像;HMM 让我利用时间结构;背景建模和去噪让我关注指标与边界;分割和加密让我处理图像变换;RANSAC 则让我学会对离群点保持怀疑。
这门课没有一个统一的大项目,但六组实验像六扇窗口,让我从不同角度看到建模的过程。现实问题不会直接告诉你应该使用哪一个公式,通常要先决定如何表示它,再判断这个表示是否足够可靠。
现在回头看,最重要的是别把模型当成现实本身
仓库里的脚本仍然有课程实验的痕迹:部分输入需要自行准备,随机实验没有统一固定种子,一些程序在导入时就会运行,结果也会随着环境和参数变化。
但这些限制反而让我更清楚地意识到,模型只是对现实的一种近似。它能帮助我们观察、比较和预测,却不应该被当成永远正确的答案。做实验时,除了看结果,还要问这个结果依赖了哪些假设。
仓库地址:HIT-Computational-Modeling-Labs。
说明:本文根据个人历史课程实验和公开仓库整理,部分文字经过 AI 辅助润色;图像和数值结果属于历史实验记录。课程资料仅用于学习回顾和个人作品整理,不用于当前课程作业或考试。

浙公网安备 33010602011771号