Read in more arguments,
This commit is contained in:
37
src/main.cpp
37
src/main.cpp
@@ -7,8 +7,12 @@ Description:
|
|||||||
It reads an image file, denoises it using the TV denoising algorithm,
|
It reads an image file, denoises it using the TV denoising algorithm,
|
||||||
and saves the denoised image to a file.
|
and saves the denoised image to a file.
|
||||||
You can run it with the following command:
|
You can run it with the following command:
|
||||||
./TV_Denoising_CUDA <input_image>
|
./TV_Denoising_CUDA <input_image> <output_image> <lambda> <iterations>
|
||||||
where <input_image> is the path to the image file you want to denoise.
|
where:
|
||||||
|
- <input_image> is the path to the input image file you want to denoise.
|
||||||
|
- <output_image> is the path to the output denoised image file.
|
||||||
|
- <lambda> is the regularization parameter for TV denoising (optional, default: 0.02).
|
||||||
|
- <iterations> is the number of iterations for TV denoising (optional, default: 10).
|
||||||
*/
|
*/
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <opencv2/opencv.hpp>
|
#include <opencv2/opencv.hpp>
|
||||||
@@ -16,29 +20,42 @@ Description:
|
|||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
// Check if an image file path is provided as an argument
|
// Check if the required arguments are provided
|
||||||
if (argc != 2)
|
if (argc < 3)
|
||||||
{
|
{
|
||||||
std::cerr << "Usage: ./denoiser <image_file_path>" << std::endl;
|
std::cerr << "Usage: ./TV_Denoising_CUDA <input_image> <output_image> [<lambda>] [<iterations>]" << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read the image
|
// Read the input arguments
|
||||||
cv::Mat image = cv::imread(argv[1], cv::IMREAD_GRAYSCALE);
|
std::string inputImagePath = argv[1];
|
||||||
|
std::string outputImagePath = argv[2];
|
||||||
|
float lambda = 0.02;
|
||||||
|
int iterations = 10;
|
||||||
|
|
||||||
|
// Check if optional arguments are provided and update the corresponding variables
|
||||||
|
if (argc >= 4)
|
||||||
|
lambda = std::stof(argv[3]);
|
||||||
|
if (argc >= 5)
|
||||||
|
iterations = std::stoi(argv[4]);
|
||||||
|
|
||||||
|
// Read the input image
|
||||||
|
cv::Mat image = cv::imread(inputImagePath, cv::IMREAD_GRAYSCALE);
|
||||||
|
|
||||||
// Check if the image was successfully loaded
|
// Check if the image was successfully loaded
|
||||||
if (image.empty())
|
if (image.empty())
|
||||||
{
|
{
|
||||||
std::cerr << "Failed to read the image." << std::endl;
|
std::cerr << "Failed to read the input image." << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
TVDenoising(image, 0.02, 10);
|
// Perform TV denoising
|
||||||
|
TVDenoising(image, lambda, iterations);
|
||||||
|
|
||||||
// Display and save the denoised image
|
// Display and save the denoised image
|
||||||
cv::imshow("Denoised Image", image);
|
cv::imshow("Denoised Image", image);
|
||||||
cv::waitKey(0);
|
cv::waitKey(0);
|
||||||
cv::imwrite("denoised_image.jpg", image);
|
cv::imwrite(outputImagePath, image);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user