Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 61 additions & 9 deletions 08_bilateral_filter/README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,68 @@
## 简介
# 实时双边滤波-CUDA

凭借你 InfiniTensor 训练营的经历和人工智能与并行计算方面的出色成绩,你受雇于一家领先的虚拟现实公司,负责为下一代 VR 头显开发实时图像增强模块。用户经常抱怨在弱光环境下看到的图像噪点严重,而现有降噪算法要么模糊细节,要么延迟太高导致眩晕。
## 项目结构

你提出采用双边滤波算法,它能够在去除噪声的同时保持边缘清晰,非常适合VR图像处理。但双边滤波计算量极大,每个像素需要访问整个邻域并计算复杂的权重,难以在移动端实时运行。幸运的是,VR 头显内置了你知道的某单位生产的黑科技 GPU,你需要利用 CUDA 实现一个高度优化的双边滤波核,能够对 4K 分辨率、60 帧/秒的视频流进行实时处理。这将大幅提升用户的沉浸感和舒适度,为公司抢占市场提供核心技术。
当前项目结构如下:

## 任务内容
开发一个 CUDA 程序,实现并行双边滤波。
```txt
实时双边滤波-CUDA/
├─ 朴素实现代码及结果/
├─ 实时双边滤波-CUDA论文.pdf
├─ 项目要求.md
├─ baboon.bmp
├─ girl.bmp
├─ main.cu
├─ monarch.bmp
├─ params.txt
└─ README.md
```

## 📬 有疑问?
其中:

更多详细信息和要求请参考本季度项目文档。
- `main.cu`:共享内存 + 网格跨步循环优化后代码
- `params.txt`:双边滤波参数文件
- `baboon.bmp`、`girl.bmp`、`monarch.bmp`:测试图像
- `实时双边滤波-CUDA论文.pdf`:最终提交的总结报告 PDF
- `项目要求.md`:课程项目要求
- `朴素实现代码及结果/`:朴素版本代码及阶段性结果记录

可以在项目群里直接询问导师和助教!
## 英伟达平台编译与运行

Good luck and happy coding! 🚀
在已经安装 CUDA 和 OpenCV 的英伟达平台上,可以直接使用下面的命令编译并运行:

```bash
nvcc -std=c++11 main.cu -o bilateral_filter \
-I/usr/local/include/opencv4 \
-L/usr/local/lib \
-lopencv_core \
-lopencv_imgproc \
-lopencv_imgcodecs

./bilateral_filter <测试图像名称> params.txt
```

例如:

```bash
./bilateral_filter monarch.bmp params.txt
```

## 参数文件格式

`params.txt` 示例:

```txt
radius = 5
sigma_spatial = 3.0
sigma_color = 30.0
use_adaptive_radius = false
```

## 输出内容

程序运行后会输出:

- 滤波后的 raw 文件
- 滤波后的图像文件
- 性能日志
- 终端中的 GPU/CPU 时间、吞吐量、加速比和 MAE
Binary file added 08_bilateral_filter/baboon.bmp
Binary file not shown.
Binary file added 08_bilateral_filter/girl.bmp
Binary file not shown.
Loading