1. 数字图像处理基础从判断题看坐标系与采样刚接触数字图像处理时很多人会被坐标系问题绕晕。我当年第一次看到数字图像坐标系与直角坐标系一致这个判断题时也犹豫了半天。实际上数字图像坐标系和数学中的直角坐标系有本质区别——前者以左上角为原点(0,0)y轴向下后者以左下角为原点y轴向上。这个差异在OpenCV等库中经常导致新手踩坑。举个实际例子当我们需要在图像(300×400)上标记一个点程序员说第2行第3列对应的是矩阵坐标系(1,2)从0开始计数而数学坐标系会表示为(2,1)。我在做车牌识别项目时就遇到过坐标系混淆导致坐标偏移20个像素的bug。采样过程则是把连续图像转为离散像素的关键步骤。判断题中说采样是空间离散化的过程完全正确但容易忽略采样定理的深层含义。就像用手机拍摄条纹衬衫时出现的摩尔纹就是典型的欠采样现象。根据奈奎斯特采样定理采样频率至少要是图像最高频率的两倍。实践中我们常用# 图像降采样示例 import cv2 img cv2.imread(photo.jpg) downsampled cv2.resize(img, (0,0), fx0.5, fy0.5) # 长宽各降采样50%2. 直方图均衡化的真相与误区关于直方图均衡化的判断题特别容易出错。处理后对比度一定提高这个说法其实不完全正确。我做过实验对已经均衡化的图像再次均衡化对比度反而会下降。直方图均衡化的本质是通过累积分布函数重新分配灰度级更适合处理灰度集中在中部的图像。有个有趣的案例在医学影像处理中我们曾用直方图均衡化增强X光片def hist_equalization(img): gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) equalized cv2.equalizeHist(gray) return equalized但发现对肺部CT图像效果不佳因为肺泡区域的灰度分布本就均匀。这时改用**自适应直方图均衡化(CLAHE)**效果更好它能限制局部对比度增强幅度。判断题中提到的虚假轮廓现象本质确实是灰度级数不足通常需要至少6bit即64级。有次处理8bit遥感图像时我们将其压缩到16级灰度就出现了明显色带通过dithering算法才解决。3. 边缘检测的实战技巧边缘检测相关的判断题藏着很多坑。拉普拉斯算子可用于平滑处理就是典型错误——它其实是二阶微分算子会突出边缘而非平滑。在实际项目中我更喜欢用Canny边缘检测三步骤高斯滤波去噪5×5核效果最佳计算梯度幅值和方向非极大值抑制双阈值检测edges cv2.Canny(image, 100, 200) # 高低阈值比建议1:2或1:3有个易混淆点Sobel算子检测的是梯度而Laplacian检测的是灰度突变。在工业质检中我们组合使用这两种算子先用Sobel定位大致边缘区域再用Laplacian精确定位缺陷点。高频加强滤波器的判断题很有意思它确实能同时增强边缘和平滑区域。我们开发过智能监控系统通过调节滤波器参数使夜间视频的暗部细节更清晰% MATLAB实现高频加强滤波 H fspecial(unsharp); enhanced imfilter(img, H);4. 彩色图像处理的常见陷阱RGB模型的判断题最容易踩雷。(0,0,0)是黑色而非白色这个基础知识点在实际编程时却经常被忽略。更隐蔽的是颜色空间转换的问题用RGB直接做直方图均衡化会严重偏色正确做法是先转到HSV/YUV空间只处理亮度通道。在开发美颜APP时我们遇到过肤色校正难题。当屏幕偏蓝时单纯增加红/绿分量会导致肤色失真。后来采用白平衡算法才解决def white_balance(img): result cv2.xphoto.createSimpleWB().balanceWhite(img) return result关于Hough变换的判断题也值得讨论。共点直线群对应正弦曲线这个说法需要补充在极坐标系下共点直线确实会交于同一点(ρ,θ)。我们在车道线检测项目中就利用这个特性先做边缘检测再用Hough变换找直线。5. 图像分割与形态学操作精要阈值分割的判断题揭示了算法选择的关键。类间最大距离法即大津法的目标确实是最大化类间方差。但在光照不均的场景下我们更常用局部自适应阈值thresh cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)形态学操作的理解误区更多。膨胀是边界收缩这个说法完全错误——膨胀实际是扩大白色区域。在文字识别预处理中我们常用先腐蚀后膨胀的开运算去除噪点kernel np.ones((3,3), np.uint8) opening cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)地区生长法的种子点选择也有讲究。实际项目中我们往往需要多个种子点比如在肺部分割时要在左右肺各设种子点。停止条件通常设置为区域增长率1%或达到预设最大迭代次数。