编程导航计算机视觉话题讨论

计算机视觉

4 参与
分享

快来分享你的内容吧~

点击登录,快来和大家讨论吧~
表情
图片
话题
打卡
综合
交流
文章
问答

数字图像在计算机中如何存储?灰度图、RGB 彩色图、二值图分别有什么特点?

## 数字图像的存储方式 数字图像在计算机中本质是一个**二维矩阵**(数组),矩阵的每个元素称为**像素(Pixel)**,像素值用二进制表示。存储时通常包含两部分: - **像素数据**:按位深(bit depth)编码的像素值矩阵 - **元数据**:宽、高、通道数、位深、颜色空间、压缩方式等(如 BMP/PNG/JPEG 文件头) **位深**决定每个像素能表达的信息量:8 位可表示 $2^8=256$ 个值,24 位可表示 $2^{24}\approx 1677$ 万种颜色。 ## 三种图像的特点对比 | 类型 | 通道数 | 每像素位数 | 像素值范围 | 数据量(同尺寸) | |------|--------|-----------|-----------|-----------------| | 二值图 | 1 | 1 bit | 0 或 1 | 最小 | | 灰度图 | 1 | 8 bit | 0~255 | 中等 | | RGB 彩色图 | 3 | 24 bit | 每通道 0~255 | 最大(灰度图的 3 倍) | **灰度图** - 单通道,一个像素值同时表示亮度,0 为纯黑、255 为纯白,中间为灰阶 - 丢失颜色信息,但保留了亮度/纹理/边缘结构 - 常用于边缘检测、形态学处理、OCR 等不依赖颜色的任务 **RGB 彩色图** - 三通道,每个像素由 R(红)、G(绿)、B(蓝)三个分量叠加而成 - 符合显示器硬件(三色荧光/子像素)和人类视觉的加色模型 - 信息最丰富,但存储和计算开销最大;实际存储时常配合压缩(如 JPEG 有损、PNG 无损)来减小体积 **二值图** - 每个像素只有两个取值(通常记 0/1,显示时常用 0/255) - 数据量最小,适合表示掩膜(mask)、文字轮廓、分割结果 - 常由灰度图经阈值分割(如 Otsu)得到,是形态学操作(膨胀、腐蚀)的主要输入 **补充**:三者可以互相转换——彩色图去色得灰度图,灰度图阈值化得二值图;反之二值图/灰度图无法恢复丢失的颜色信息。

均值滤波、高斯滤波、中值滤波的原理与适用场景有何不同?

# 均值滤波、高斯滤波、中值滤波对比 三者都是**空间域滤波**(用邻域像素计算中心像素的新值),但原理和效果差异很大。 --- ## 1. 均值滤波(Mean Filter) **原理**:取邻域内所有像素的**算术平均**作为中心像素的新值。 $$g(x,y) = \frac{1}{m \times n} \sum_{(i,j) \in S} f(i,j)$$ **特点** - 线性滤波,实现最简单、速度最快 - 对**高斯噪声**有一定平滑作用 - 缺点:对**离群点(脉冲噪声)**敏感——一个极端值会拉偏整个邻域的平均值 - 边缘被严重模糊(边缘两侧像素被平均混合) **适用场景**:对噪声不敏感、追求速度的简单平滑;图像预处理中的粗略降噪。 --- ## 2. 高斯滤波(Gaussian Filter) **原理**:邻域内像素**加权平均**,权重服从二维高斯分布,**中心权重最大、越远越小**。 $$G(x,y) = \frac{1}{2\pi\sigma^2} e^{-\frac{x^2+y^2}{2\sigma^2}}$$ **特点** - 线性滤波,是均值滤波的"加权改进版" - 权重平滑过渡,不会像均值滤波那样产生生硬的块状效应 - 对**高斯噪声**效果最好(高斯噪声在统计上最匹配高斯核) - 相比均值滤波,**边缘保留更好**(中心像素权重高,受远处像素影响小),但仍会模糊边缘 - 计算量略大于均值滤波 **适用场景**:高斯噪声去除;**边缘检测前的预处理**(如 Canny 的第一步);尺度空间构建(高斯金字塔);图像模糊/美颜。 --- ## 3. 中值滤波(Median Filter) **原理**:取邻域内所有像素的**中位数**作为中心像素的新值(非线性滤波)。 **特点** - **非线性滤波**,不涉及加权求和 - 对**椒盐噪声(脉冲噪声)效果极佳**——极端值(0 或 255)不会影响中位数 - **能很好地保留边缘**:边缘两侧像素值差异大时,中位数会落在其中一侧,不会像线性滤波那样把两侧"混合"成过渡带 - 缺点:对高斯噪声效果一般;计算量较大(需要排序);邻域过大时可能产生"阶梯效应" **适用场景**:椒盐噪声去除(如老照片扫描、传感器故障图像);需要**保边降噪**的场景;医学图像、文档图像预处理。 --- ## 对比总结 | 维度 | 均值滤波 | 高斯滤波 | 中值滤波 | |------|---------|---------|---------| | 类型 | 线性 | 线性 | **非线性** | | 权重 | 等权平均 | 高斯加权 | 取中位数 | | 高斯噪声 | 一般 | **最好** | 一般 | | 椒盐噪声 | 差(被拉偏) | 差 | **最好** | | 边缘保留 | 差 | 中 | **好** | | 计算复杂度 | 最低 | 中 | 较高(需排序) | | 典型场景 | 快速粗略平滑 | 高斯去噪、边缘检测预处理 | 椒盐去噪、保边降噪 | ## 一句话总结 > **均值滤波**是"平均一下"(简单但糊边、怕离群点),**高斯滤波**是"按距离加权平均"(去高斯噪声最优、边缘稍好),**中值滤波**是"取中间值"(专治椒盐噪声、最能保边)。 --- ## 纯 Python 实现示例(无第三方依赖) ````python def median_filter(pixels, width, height, k=3): """中值滤波:对灰度图(pixels 为二维列表)做 k×k 中值滤波""" pad = k // 2 result = [[0] * width for _ in range(height)] for y in range(height): for x in range(width): window = [] for dy in range(-pad, pad + 1): for dx in range(-pad, pad + 1): ny, nx = y + dy, x + dx # 边界处理:越界时取最近的有效像素(复制边缘) ny = max(0, min(height - 1, ny)) nx = max(0, min(width - 1, nx)) window.append(pixels[ny][nx]) window.sort() result[y][x] = window[len(window) // 2] return result ```` **面试高频追问**:为什么中值滤波能保留边缘而均值不能?——均值滤波把边缘两侧的像素**混合平均**,产生过渡带(模糊);中值滤波取的是排序后的**中间值**,只要窗口内一侧像素占多数,中位数就落在该侧,边缘被完整保留。这也是中值滤波被称为"保边滤波器"的原因。

openCV

**在图像增强中,得到边缘锐化、对比度增强的图像,下列说法正确的是( )**

openCV

**关于均值滤波下列说法正确的是( )**

下载 APP