mirror of
https://github.com/boostorg/gil.git
synced 2026-01-19 16:22:14 +00:00
Group include directives, sort within group: * In headers of GIL core and extensions: 1. boost/gil/extension/* 2. boost/gil/* 3. boost/* 4. C++ standard library headers * In programs: 1. boost/gil/* 2. boost/* 3. C++ standard library headers 4. "xxx.hpp" for local headers Add basic guidelines to CONTRIBUTING.md. Add/Remove #include <boost/config.hpp> or std headers un/necessary. Rename gil_concept.hpp to concepts.hpp. Remove gil_all.hpp - we already have all-in-one boost/gil.hpp. Tidy up and unify copyright and license header. Tidy up formatting and excessive whitespaces in some comments. Remove Doxygen block with file description, author, date, etc. Remove dead or commented pragmas and directives. Trim trailing whitespaces.
72 lines
2.8 KiB
C++
72 lines
2.8 KiB
C++
//
|
|
// Copyright 2005-2007 Adobe Systems Incorporated
|
|
//
|
|
// Distributed under 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
|
|
#include <boost/gil/image.hpp>
|
|
#include <boost/gil/typedefs.hpp>
|
|
#include <boost/gil/extension/io/jpeg_io.hpp>
|
|
#include <boost/gil/extension/numeric/kernel.hpp>
|
|
#include <boost/gil/extension/numeric/convolve.hpp>
|
|
|
|
// Example for convolve_rows() and convolve_cols() in the numeric extension
|
|
|
|
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<float,9> kernel(gaussian_1,4);
|
|
|
|
convolve_rows_fixed<rgb32f_pixel_t>(const_view(convolved),kernel,view(convolved));
|
|
convolve_cols_fixed<rgb32f_pixel_t>(const_view(convolved),kernel,view(convolved));
|
|
jpeg_write_view("out-convolution.jpg", view(convolved));
|
|
|
|
// This is how to use a resizable kernel
|
|
kernel_1d<float> kernel2(gaussian_1,9,4);
|
|
convolve_rows<rgb32f_pixel_t>(const_view(img),kernel2,view(img));
|
|
convolve_cols<rgb32f_pixel_t>(const_view(img),kernel2,view(img));
|
|
jpeg_write_view("out-convolution2.jpg", view(img));
|
|
|
|
return 0;
|
|
}
|