Go to the documentation of this file.00001 #ifndef vipl_threshold_txx_
00002 #define vipl_threshold_txx_
00003
00004 #include "vipl_threshold.h"
00005
00006 template <class ImgIn,class ImgOut,class DataIn,class DataOut,class PixelItr>
00007 bool vipl_threshold <ImgIn,ImgOut,DataIn,DataOut,PixelItr> :: section_applyop()
00008 {
00009 const ImgIn &in = this->in_data();
00010 ImgOut &out = this->out_data();
00011
00012 int startx = vipl_filter<ImgIn,ImgOut,DataIn,DataOut,2,PixelItr>::start(this->X_Axis());
00013 int starty = vipl_filter<ImgIn,ImgOut,DataIn,DataOut,2,PixelItr>::start(this->Y_Axis());
00014 int stopx = vipl_filter<ImgIn,ImgOut,DataIn,DataOut,2,PixelItr>::stop(this->X_Axis());
00015 int stopy = vipl_filter<ImgIn,ImgOut,DataIn,DataOut,2,PixelItr>::stop(this->Y_Axis());
00016 for (int j = starty; j < stopy; ++j)
00017 for (int i = startx; i < stopx; ++i) {
00018 DataIn p = fgetpixel(in, i, j, DataIn(0));
00019 if (p <= threshold()) { fsetpixel(out, i, j, DataOut(below())); }
00020 else if (aboveset()) { fsetpixel(out, i, j, DataOut(above())); }
00021 else { fsetpixel(out, i, j, DataOut(p)); }
00022 }
00023 return true;
00024 }
00025
00026 #endif // vipl_threshold_txx_