From 9501a221194c5b54e3631a59489a9ab5a07da6c3 Mon Sep 17 00:00:00 2001 From: neingeist Date: Mon, 20 Jan 2014 12:12:16 +0100 Subject: [PATCH] add SharpenImage --- .gitignore | 2 ++ CMakeLists.txt | 3 +++ SharpenImage.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 SharpenImage.cpp diff --git a/.gitignore b/.gitignore index d00d606..b869c79 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ SVMTest SVMTest.png DisplayImage + +SharpenImage diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a0395e..52af387 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,3 +7,6 @@ target_link_libraries( SVMTest ${OpenCV_LIBS} ) add_executable( DisplayImage DisplayImage.cpp ) target_link_libraries( DisplayImage ${OpenCV_LIBS} ) + +add_executable( SharpenImage SharpenImage.cpp ) +target_link_libraries( SharpenImage ${OpenCV_LIBS} ) diff --git a/SharpenImage.cpp b/SharpenImage.cpp new file mode 100644 index 0000000..dfe9794 --- /dev/null +++ b/SharpenImage.cpp @@ -0,0 +1,65 @@ +#include +#include + +using namespace cv; + +void +Sharpen (const Mat & myImage, Mat & Result) +{ + CV_Assert (myImage.depth () == CV_8U); // accept only uchar images + + Result.create (myImage.size (), myImage.type ()); + const int nChannels = myImage.channels (); + + for (int j = 1; j < myImage.rows - 1; ++j) + { + const uchar *previous = myImage.ptr < uchar > (j - 1); + const uchar *current = myImage.ptr < uchar > (j); + const uchar *next = myImage.ptr < uchar > (j + 1); + + uchar *output = Result.ptr < uchar > (j); + + for (int i = nChannels; i < nChannels * (myImage.cols - 1); ++i) + { + *output++ = saturate_cast < uchar > (5 * current[i] + - current[i - nChannels] - + current[i + nChannels] - + previous[i] - next[i]); + } + } + + Result.row (0).setTo (Scalar (0)); + Result.row (Result.rows - 1).setTo (Scalar (0)); + Result.col (0).setTo (Scalar (0)); + Result.col (Result.cols - 1).setTo (Scalar (0)); +} + +int +main (int argc, char **argv) +{ + if (argc != 2) + { + printf ("Usage: SharpenImage image.jpg\n"); + return -1; + } + + Mat image; + image = imread (argv[1], 1); + + if (argc != 2 || !image.data) + { + printf ("No image data\n"); + return -1; + } + + Mat result; + Sharpen (image, result); + + namedWindow ("Sharpen Image", CV_WINDOW_AUTOSIZE); + // imshow("Sharpen Image", image); + imshow ("Sharpen Image", result); + + waitKey (0); + + return 0; +}