[Benjamin Piwowarski] Renamed "foreach" macro into "bforeach" to avoid conflicts...
[libdai.git] / examples / example_imagesegmentation.cpp
index b22e8e5..fb5c57e 100644 (file)
@@ -1,21 +1,14 @@
 /*  This file is part of libDAI - http://www.libdai.org/
  *
- *  libDAI is licensed under the terms of the GNU General Public License version
- *  2, or (at your option) any later version. libDAI is distributed without any
- *  warranty. See the file COPYING for more details.
+ *  Copyright (c) 2006-2011, The libDAI authors. All rights reserved.
  *
- *  Copyright (C) 2006-2010  Joris Mooij  [joris dot mooij at libdai dot org]
- *  Copyright (C) 2006-2007  Radboud University Nijmegen, The Netherlands
+ *  Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
  */
 
 
 #include <iostream>
 #include <dai/alldai.h>  // Include main libDAI header file
-#include <CImg.h>        // This example needs a recent version of CImg to be installed
-
-
-// For backwards compatibility with old CImg interface
-// #define CIMGOLD
+#include <CImg.h>        // This example needs CImg to be installed
 
 
 using namespace dai;
@@ -41,7 +34,7 @@ FactorGraph img2fg( const CImg<T> &img, double J, double th_min, double th_max,
     vector<Var> vars;
     vector<Factor> factors;
 
-#ifdef CIMGOLD
+#ifndef NEW_CIMG
     size_t dimx = img.width;   // Width of the image in pixels
     size_t dimy = img.height;  // Height of the image in pixels
 #else
@@ -177,14 +170,14 @@ double doInference( FactorGraph& fg, string algOpts, size_t maxIter, double tol,
             }
 
         // Display the image with the current beliefs
-#ifdef CIMGOLD
+#ifndef NEW_CIMG
         disp << image;
 #else
         disp = image;
 #endif
 
-        // Perform the requested inference algorithm
-        // (which could be limited to perform only 1 iteration)
+        // Perform the requested inference algorithm for only one step
+        ia->setMaxIter( iter + 1 );
         maxDiff = ia->run();
 
         // Output progress
@@ -235,7 +228,7 @@ int main(int argc,char **argv) {
     CImg<unsigned char> image2 = CImg<>( file_i2 );
 
     // Check image sizes
-#ifdef CIMGOLD
+#ifndef NEW_CIMG
     if( (image1.width != image2.width) || (image1.height != image2.height) )
         cerr << "Error: input images should have same size." << endl;
     size_t dimx = image1.width;
@@ -265,7 +258,7 @@ int main(int argc,char **argv) {
     for( size_t i = 0; i < dimx; i++ ) {
         for( size_t j = 0; j < dimy; j++ ) {
             int avg = 0;
-#ifdef CIMGOLD
+#ifndef NEW_CIMG
             for( int c = 0; c < image1.dimv(); c++ )
                 avg += image1( i, j, c );
             avg /= image1.dimv();
@@ -314,7 +307,7 @@ int main(int argc,char **argv) {
                 image4(i,j,1) = image2(i,j,1);
                 image4(i,j,2) = image2(i,j,2);
             } else
-#ifdef CIMGOLD
+#ifndef NEW_CIMG
                 for( size_t c = 0; c < (size_t)image4.dimv(); c++ )
                     image4(i,j,c) = 255;
 #else
@@ -329,7 +322,7 @@ int main(int argc,char **argv) {
     image4.save_jpeg( file_o2, 100 );
 
     cout << "Close the last image display in order to finish." << endl;
-#ifdef CIMGOLD
+#ifndef NEW_CIMG
     while( !main_disp.is_closed )
         cimg::wait( 40 );
 #else