diff --git a/Homework/noise_denoise/main.cpp b/Homework/noise_denoise/main.cpp new file mode 100644 index 0000000..1c5f1e1 --- /dev/null +++ b/Homework/noise_denoise/main.cpp @@ -0,0 +1,51 @@ +#include +#include "opencv2/opencv.hpp" + +void make_salt_and_pepper_noise(cv::Mat& dst, float percent) { + int num = dst.total() * percent; + for (int i = 0; i < num; i++) { + dst.at(rand() % dst.rows, rand() % dst.cols) = (i % 2) * 255; + } +} + +int main() { + cv::VideoCapture camera(0); + if (!camera.isOpened()) { + std::cerr << "isOpened()" << std::endl; + return EXIT_FAILURE; + } + std::uint32_t fps = camera.get(cv::CAP_PROP_FPS); + cv::Mat src; + + while (cv::waitKey(1000 / fps) != 27) { + camera >> src; + if (src.empty()) break; + cv::imshow("preview", src); + } + cv::cvtColor(src, src, cv::COLOR_BGR2GRAY); + + cv::Mat gaussian_noise(src.size(), CV_8UC1); + //cv::Mat gaussian, salt_and_pepper, bilateral, median; + + cv::randn(gaussian_noise, 0, 5); + cv::Mat gaussian = src + gaussian_noise; + + cv::Mat salt_and_pepper; + src.copyTo(salt_and_pepper); + make_salt_and_pepper_noise(salt_and_pepper, 0.1); + + cv::Mat bilateral; + cv::bilateralFilter(gaussian, bilateral, -1, 10, 5); + + cv::Mat median; + cv::medianBlur(salt_and_pepper, median, 3); + + cv::imshow("src", src); + cv::imshow("gaussian", gaussian); + cv::imshow("salt_and_pepper", salt_and_pepper); + cv::imshow("bilateral", bilateral); + cv::imshow("median", median); + + cv::waitKey(); + cv::destroyAllWindows(); +} \ No newline at end of file diff --git a/Homework/noise_denoise/noise_denoise.vcxproj b/Homework/noise_denoise/noise_denoise.vcxproj index 35c27eb..f6ce490 100644 --- a/Homework/noise_denoise/noise_denoise.vcxproj +++ b/Homework/noise_denoise/noise_denoise.vcxproj @@ -131,6 +131,7 @@ + diff --git a/Homework/noise_denoise/noise_denoise.vcxproj.filters b/Homework/noise_denoise/noise_denoise.vcxproj.filters index 493ccf6..2c1b3dc 100644 --- a/Homework/noise_denoise/noise_denoise.vcxproj.filters +++ b/Homework/noise_denoise/noise_denoise.vcxproj.filters @@ -14,4 +14,9 @@ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + 소스 파일 + + \ No newline at end of file diff --git a/Homework/noise_denoise/noise_denoise.zip b/Homework/noise_denoise/noise_denoise.zip new file mode 100644 index 0000000..cc80468 Binary files /dev/null and b/Homework/noise_denoise/noise_denoise.zip differ diff --git a/Homework/noise_denoise/스크린샷 2025-04-02 200316.png b/Homework/noise_denoise/스크린샷 2025-04-02 200316.png new file mode 100644 index 0000000..b0fcccd --- /dev/null +++ b/Homework/noise_denoise/스크린샷 2025-04-02 200316.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b155be6a2083dc3c9d5b725f91e8477af179d5a3e44050b3ee7a715affa62d8 +size 2006523