OSDN Git Service

[更新]NyARToolkit
[nyartoolkit-and/nyartoolkit-and.git] / src / jp / nyatla / nyartoolkit / core2 / rasterfilter / gs2bin / NyARRasterFilter_Threshold.java
1 /* \r
2  * PROJECT: NyARToolkit\r
3  * --------------------------------------------------------------------------------\r
4  * This work is based on the original ARToolKit developed by\r
5  *   Hirokazu Kato\r
6  *   Mark Billinghurst\r
7  *   HITLab, University of Washington, Seattle\r
8  * http://www.hitl.washington.edu/artoolkit/\r
9  *\r
10  * The NyARToolkit is Java version ARToolkit class library.\r
11  * Copyright (C)2008 R.Iizuka\r
12  *\r
13  * This program is free software; you can redistribute it and/or\r
14  * modify it under the terms of the GNU General Public License\r
15  * as published by the Free Software Foundation; either version 2\r
16  * of the License, or (at your option) any later version.\r
17  * \r
18  * This program is distributed in the hope that it will be useful,\r
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
21  * GNU General Public License for more details.\r
22  * \r
23  * You should have received a copy of the GNU General Public License\r
24  * along with this framework; if not, write to the Free Software\r
25  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
26  * \r
27  * For further information please contact.\r
28  *      http://nyatla.jp/nyatoolkit/\r
29  *      <airmail(at)ebony.plala.or.jp>\r
30  * \r
31  */\r
32 package jp.nyatla.nyartoolkit.core2.rasterfilter.gs2bin;\r
33 \r
34 import jp.nyatla.nyartoolkit.NyARException;\r
35 import jp.nyatla.nyartoolkit.core.raster.*;\r
36 import jp.nyatla.nyartoolkit.core.rasterfilter.INyARRasterFilter_GsToBin;\r
37 import jp.nyatla.nyartoolkit.core.types.*;\r
38 \r
39 /**\r
40  * 定数閾値による2値化をする。\r
41  * \r
42  */\r
43 public class NyARRasterFilter_Threshold implements INyARRasterFilter_GsToBin\r
44 {\r
45         private int _threshold;\r
46 \r
47         public NyARRasterFilter_Threshold(int i_threshold)\r
48         {\r
49                 this._threshold = i_threshold;\r
50                 return;\r
51         }\r
52 \r
53         public void doFilter(NyARGrayscaleRaster i_input, NyARBinRaster i_output) throws NyARException\r
54         {\r
55                 assert (i_input.getSize().isEqualSize(i_output.getSize()) == true);\r
56 \r
57                 final int[] out_buf = (int[]) i_output.getBufferReader().getBuffer();\r
58                 final int[] in_buf = (int[]) i_input.getBufferReader().getBuffer();\r
59 \r
60                 int bp = 0;\r
61                 NyARIntSize size = i_output.getSize();\r
62                 for (int y = 0; y < size.h - 1; y++) {\r
63                         for (int x = 0; x < size.w; x++) {\r
64                                 out_buf[y*size.w+x] = in_buf[y*size.w+x] >= this._threshold ? 1 : 0;\r
65                                 bp += 3;\r
66                         }\r
67                 }\r
68                 return;\r
69         }\r
70         public void setThreshold(int i_threshold)\r
71         {\r
72                 this._threshold = i_threshold;\r
73                 return;         \r
74         }\r
75 }\r