计算机视觉实验报告1

上传者: 35774446 | 上传时间: 2025-11-24 09:46:41 | 文件大小: 2.15MB | 文件类型: PDF
在本篇计算机视觉实验报告中,学生王培钰主要任务是使用CImg库重写和封装Canny边缘检测算法,并对算法进行优化。Canny算法是计算机视觉领域中一种经典的边缘检测方法,它通过一系列步骤有效地提取图像中的边缘。以下是实验报告中涉及的关键知识点和实现过程的详细解释: 1. **Canny边缘检测算法**:Canny算法包含以下步骤: - **灰度化**:将彩色图像转换为灰度图像,通过红、绿、蓝分量的加权平均完成。 - **高斯滤波**:使用高斯滤波器平滑图像,消除高频噪声,但保留边缘信息。这里使用了`gaussian_smooth()`函数,并通过`make_gaussian_kernel()`生成高斯核。 - **计算梯度**:通过计算一阶偏导数求得图像的梯度幅值和方向。这涉及到`derrivative_x_y()`函数,以及`angle_radians()`和`radian_direction()`来确定方向。 - **非极大值抑制**:通过比较当前像素点与其邻域内像素点的梯度值,抑制非边缘像素,以减少假阳性边缘。`non_max_supp()`函数实现此操作。 - **双阈值检测**:使用高低两个阈值确定边缘,低阈值用于连接边缘,高阈值用于去除噪声。`apply_hysteresis()`函数处理这一过程。 - **边缘连接与删除**:通过`canny_line()`函数将相邻边缘连成长线,`delete_line()`函数删除长度小于20的短线条。 2. **CImg库的使用**:CImg是一个开源的C++图像处理库,实验要求只使用CImg进行图像的读取、写入和处理。通过封装,确保了代码的简洁性和可读性。 3. **代码封装**:每个功能都封装为单独的函数,如`RGBtoGray()`、`gaussian_smooth()`等,便于代码复用和维护。 4. **参数测试与分析**:对不同参数(如高斯滤波的σ值、双阈值)进行测试,观察其对边缘检测结果的影响。这有助于理解算法的敏感性和适应性。 5. **测试与调试**:通过对每一步的结果进行可视化和数量统计(如边缘像素点的数量),验证算法的正确性和效果。例如,通过比较经过连线和删线处理后的像素点数量变化。 实验过程中,学生按照学号尾号的规则分配了需要改写的代码(Code0),并成功实现了Canny算法的各个步骤,包括图像预处理、边缘检测和后处理。测试表明,经过优化的Canny算法能够有效检测图像边缘,并能根据设定的参数调整边缘的精确度和连通性。这种实践加深了对Canny边缘检测算法的理解,并提高了编程能力。

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明