2 Copyright (C) 2012 fmaj7b5.info
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
18 // binarize.cpp :
\83R
\83\93\83\
\81[
\83\8b \83A
\83v
\83\8a\83P
\81[
\83V
\83\87\83\93\82Ì
\83G
\83\93\83g
\83\8a \83|
\83C
\83\93\83g
\82ð
\92è
\8b`
\82µ
\82Ü
\82·
\81B
28 using namespace FM7b5;
30 static void binarize_cpu(ImageGray& out, const ImageGray& in, const uint8_t thres = 128);
32 int _tmain(int argc, _TCHAR* argv[])
35 const uint8_t thres(128);
38 image = loadPGM("..\\img\\sine.pgm");
40 ImageGray out(image.width(), image.height());
41 binarize_cpu(out, image, thres);
42 savePNM(out, "result_cpu.pgm");
44 ImageGray out_gpu(image.width(), image.height());
45 binarize_gpu(out_gpu, image, thres);
46 savePNM(out_gpu, "result_gpu.pgm");
48 catch (std::exception& e)
50 std::cout << e.what() << std::endl;
58 binarize_cpu(ImageGray& out, const ImageGray& in, const uint8_t thres)
60 if (in.width() != out.width() || in.height() != out.height()) {
61 throw std::runtime_error("sizes of input and output images are diferent.");
64 for (size_t h = 0; h < in.height(); ++h) {
65 for (size_t w = 0; w < in.width(); ++w) {
66 out(w, h) = (in(w, h) < thres) ? 0 : 255;