From c92e057503ebf82a6c22505086b8f0834d051e20 Mon Sep 17 00:00:00 2001 From: Brandon Rodriguez <brodriguez8774@gmail.com> Date: Tue, 27 Apr 2021 07:36:42 -0400 Subject: [PATCH] Update readme --- readme.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/readme.md b/readme.md index 179d397..9dea506 100644 --- a/readme.md +++ b/readme.md @@ -6,6 +6,47 @@ Various examinations of the concept of Convolution. Mostly as a means to explore programming with the GPU. +### Part 0 +This part mostly acts as a test for generally using C++ and CUDA with image input. + +Before this project, I had never written in C++, used CUDA, or used images as input data. + +For each input image, it will create a corresponding output image that: +* Has every other pixel alternate between black and white, ignoring original input (but still using original image size). +* Has a checkerboard type pattern of black/white squares, igoring original input (but still using original image size). +* Has red color saturation increased from original image. +* Has green color saturation increased from original image. +* Has blue color saturation increased from original image. + +### Part 1 +This part implements Gaussian Blur through convolution. + +Effectively creates a blurred version of the original input image. + +Blur strength can be adjusted by changing the mask size on lines 490/491 in the `image.cu` file. +* Larger masks mean stronger blur, but longer compute times. +* Smaller masks mean weaker blur, but faster compute times. + +### Part 2 +This part implements edge detection using the "Laplacian of Gaussian". + +Effectively, creates a grey/black image, with light-grey/white indicating where image lines are. + +Detection strength can be adjusted by changing the mask size on lines 490/491 in the `image.cu` file. +* Recommend either 7x7 or 9x9 mask size. +* Anything smaller tends to fail to detect lines well. +* Anything larger tends to overfit and pick up noise as "lines". + +### Running the Project +Using terminal, open the desired part (part_0 / part_1 / part_2). + +Execute with + + clear && make run <input_path> + +Where \<input_path\> is the path to an image file or a directory of image files. + +Note that only portable bitmap files are accepted as input. ## References -- GitLab