OSDN Git Service

[backup]NyARToolkit for Java
authornyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Wed, 11 Nov 2009 08:50:44 +0000 (08:50 +0000)
committernyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Wed, 11 Nov 2009 08:50:44 +0000 (08:50 +0000)
histgram解析機能を追加

src/jp/nyatla/nyartoolkit/core/analyzer/histgram/NyARHistgramAnalyzer_DiscriminantThreshold.java
src/jp/nyatla/nyartoolkit/core/analyzer/raster/NyARRasterAnalyzer_Histgram.java
src/jp/nyatla/nyartoolkit/core/rasterfilter/gs2bin/NyARRasterFilter_ConstantThrshold.java
src/jp/nyatla/nyartoolkit/core/types/NyARHistgram.java
src/jp/nyatla/utils/j2se/NyARRasterImageIO.java

index 244c05f..993ba55 100644 (file)
@@ -13,6 +13,7 @@ public class NyARHistgramAnalyzer_DiscriminantThreshold implements INyARHistgram
 {\r
        private double _score;\r
 \r
+\r
        public int getThreshold(NyARHistgram i_histgram)\r
        {\r
                int[] hist=i_histgram.data;\r
index a7a9c11..920cb8d 100644 (file)
@@ -73,6 +73,7 @@ public class NyARRasterAnalyzer_Histgram
                for (int i = o_histgram.length-1; i >=0; i--){\r
                        h[i] = 0;\r
                }\r
+               o_histgram.total_of_data=size.w*size.h;\r
                return this._histImpl.createHistgram(i_input.getBufferReader(), size,h,this._vertical_skip);            \r
        }\r
        \r
index f5c7c80..986872c 100644 (file)
@@ -14,6 +14,10 @@ public class NyARRasterFilter_ConstantThrshold implements INyARRasterFilter_Gs2B
                //初期化\r
                this._threshold=i_initial_threshold;\r
        }\r
+       public NyARRasterFilter_ConstantThrshold() throws NyARException\r
+       {\r
+               this._threshold=0;\r
+       }\r
 \r
        \r
        public void setThreshold(int i_threshold)\r
index 6373a84..1188630 100644 (file)
@@ -10,7 +10,7 @@ public class NyARHistgram
         */\r
        public int[] data;\r
        /**\r
-        * 有効なサンプリング値の範囲。[0-i_length-1]\r
+        * 有効なサンプリング値の範囲。[0-data.length-1]\r
         */\r
        public int length;\r
        /**\r
@@ -39,4 +39,31 @@ public class NyARHistgram
                }\r
                return result;\r
        }\r
+       /**\r
+        * 指定したi_pos未満サンプルを0にします。\r
+        * @param i_pos\r
+        */\r
+       public void lowCut(int i_pos)\r
+       {\r
+               int s=0;\r
+               for(int i=0;i<i_pos;i++){\r
+                       s+=this.data[i];\r
+                       this.data[i]=0;\r
+               }\r
+               this.total_of_data-=s;\r
+       }\r
+       /**\r
+        * 指定したi_pos未満サンプルを0にします。\r
+        * @param i_pos\r
+        */\r
+       public void highCut(int i_pos)\r
+       {\r
+               int s=0;\r
+               for(int i=this.length-1;i>=i_pos;i--){\r
+                       s+=this.data[i];\r
+                       this.data[i]=0;\r
+               }\r
+               this.total_of_data-=s;\r
+       }\r
+       \r
 }\r
index 165cbf0..2144c70 100644 (file)
  */\r
 package jp.nyatla.utils.j2se;\r
 \r
+import java.awt.Graphics.*;\r
 import java.awt.image.*;\r
+import java.awt.*;\r
 import jp.nyatla.nyartoolkit.*;\r
 import jp.nyatla.nyartoolkit.core.raster.rgb.*;\r
 import jp.nyatla.nyartoolkit.core.raster.*;\r
 import jp.nyatla.nyartoolkit.core.rasterreader.*;\r
+import jp.nyatla.nyartoolkit.core.types.*;\r
 \r
 /**\r
  * BufferdImageとRasterイメージ間で、ビットマップをコピーします。\r
@@ -106,6 +109,28 @@ public class NyARRasterImageIO
                return;\r
        }       \r
        /**\r
+        * ヒストグラムを書き出します。\r
+        * @param i_in\r
+        * @param o_out\r
+        * @throws NyARException\r
+        */\r
+       public static void copy(NyARHistgram i_in,Graphics i_g,int i_l,int i_t,int i_h) throws NyARException\r
+       {\r
+               //正規化のための定数を出す。\r
+               int max=0;\r
+               for(int i=0;i<i_in.length;i++){\r
+                       max=max<i_in.data[i]?i_in.data[i]:max;\r
+               }\r
+               if(max==0){\r
+                       return;\r
+               }\r
+               //ヒストグラムを書く\r
+               for(int i=0;i<i_in.length;i++){\r
+                       i_g.drawLine(i_l+i,i_t,i_l+i,i_h-i_h*i_in.data[i]/max);\r
+               }\r
+               return;\r
+       }       \r
+       /**\r
         * i_outへこのイメージを出力します。\r
         * \r
         * @param i_out\r
@@ -149,5 +174,6 @@ public class NyARRasterImageIO
                        }\r
                }\r
                return;\r
-       }       \r
+       }\r
+       \r
 }\r