/* Copyright 2005-2007 Adobe Systems Incorporated Use, modification and distribution are subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt). See http://opensource.adobe.com/gil for most recent version including documentation. */ /*************************************************************************************************/ /////////////////////// //// NOTE: This sample file uses the numeric extension, which does not come with the Boost distribution. //// You may download it from http://opensource.adobe.com/gil /////////////////////// /// \file /// \brief Test file for convolve_rows() and convolve_cols() in the numeric extension /// \author Lubomir Bourdev and Hailin Jin /// \date February 27, 2007 #include #include #include #include #include int main() { using namespace boost::gil; rgb8_image_t img; jpeg_read_image("test.jpg",img); // Convolve the rows and the columns of the image with a fixed kernel rgb8_image_t convolved(img); // radius-1 Gaussian kernel, size 9 float gaussian_1[]={0.00022923296f,0.0059770769f,0.060597949f,0.24173197f,0.38292751f, 0.24173197f,0.060597949f,0.0059770769f,0.00022923296f}; /* // radius-2 Gaussian kernel, size 15 float gaussian_2[]={ 0.00048869418f,0.0024031631f,0.0092463447f, 0.027839607f,0.065602221f,0.12099898f,0.17469721f, 0.19744757f, 0.17469721f,0.12099898f,0.065602221f,0.027839607f, 0.0092463447f,0.0024031631f,0.00048869418f }; //radius-3 Gaussian kernel, size 23 float gaussian_3[]={ 0.00016944126f,0.00053842377f,0.0015324751f,0.0039068931f, 0.0089216027f,0.018248675f,0.033434924f,0.054872241f, 0.080666073f,0.10622258f,0.12529446f, 0.13238440f, 0.12529446f,0.10622258f,0.080666073f, 0.054872241f,0.033434924f,0.018248675f,0.0089216027f, 0.0039068931f,0.0015324751f,0.00053842377f,0.00016944126f }; //radius-4 Gaussian kernel, size 29 float gaussian_4[]={ 0.00022466264f,0.00052009715f,0.0011314391f,0.0023129794f, 0.0044433107f,0.0080211498f,0.013606987f,0.021691186f, 0.032493830f,0.045742013f,0.060509924f,0.075220309f, 0.087870099f,0.096459411f,0.099505201f,0.096459411f,0.087870099f, 0.075220309f,0.060509924f,0.045742013f,0.032493830f, 0.021691186f,0.013606987f,0.0080211498f,0.0044433107f, 0.0023129794f,0.0011314391f,0.00052009715f,0.00022466264f, }; */ kernel_1d_fixed kernel(gaussian_1,4); convolve_rows_fixed(const_view(convolved),kernel,view(convolved)); convolve_cols_fixed(const_view(convolved),kernel,view(convolved)); jpeg_write_view("out-convolution.jpg", view(convolved)); // This is how to use a resizable kernel kernel_1d kernel2(gaussian_1,9,4); convolve_rows(const_view(img),kernel2,view(img)); convolve_cols(const_view(img),kernel2,view(img)); jpeg_write_view("out-convolution2.jpg", view(img)); return 0; }