- return (th_w + th_b) / 2;\r
- }\r
-\r
- public void analyzeRaster(INyARRaster i_input) throws NyARException\r
- {\r
- final INyARBufferReader buffer_reader=i_input.getBufferReader(); \r
- assert (buffer_reader.isEqualBufferType(INyARBufferReader.BUFFERFORMAT_INT1D_GLAY_8));\r
-\r
- int[] histgram = new int[256];\r
- // 閾値の基準値を出す。\r
- this._threshold = createHistgram(buffer_reader,i_input.getSize(), histgram);\r
- return;\r
- }\r
-\r
- /**\r
- * ヒストグラムをラスタに書き出す。\r
- * \r
- * @param i_output\r
- */\r
- public void debugDrawHistgramMap(INyARRaster i_input, INyARRaster i_output) throws NyARException\r
- {\r
- INyARBufferReader in_buffer_reader=i_input.getBufferReader(); \r
- INyARBufferReader out_buffer_reader=i_output.getBufferReader(); \r
- assert (in_buffer_reader.isEqualBufferType(INyARBufferReader.BUFFERFORMAT_INT1D_GLAY_8));\r
- assert (out_buffer_reader.isEqualBufferType(INyARBufferReader.BUFFERFORMAT_INT1D_GLAY_8));\r
-\r
- NyARIntSize size = i_output.getSize();\r
-\r
- int[] out_buf = (int[]) out_buffer_reader.getBuffer();\r
- // 0で塗りつぶし\r
- for (int y = 0; y < size.h; y++) {\r
- for (int x = 0; x < size.w; x++) {\r
- out_buf[y* size.w+x] = 0;\r
- }\r
- }\r
- // ヒストグラムを計算\r
- int[] histgram = new int[256];\r
- int threshold = createHistgram(in_buffer_reader,i_input.getSize(), histgram);\r
- for (int i = 255; i > 0; i--) {\r
- histgram[i] = Math.abs(histgram[i]);\r
- }\r
-\r
- // ヒストグラムの最大値を出す\r
- int max_v = 0;\r
- for (int i = 0; i < 255; i++) {\r
- if (max_v < histgram[i]) {\r
- max_v = histgram[i];\r
- }\r
- }\r
- // 目盛り\r
- for (int i = 0; i < size.h; i++) {\r
- out_buf[i* size.w+0] = 128;\r
- out_buf[i* size.w+128] = 128;\r
- out_buf[i* size.w+255] = 128;\r
- }\r
- // スケーリングしながら描画\r
- for (int i = 0; i < 255; i++) {\r
- out_buf[(histgram[i] * (size.h - 1) / max_v)* size.w+i] = 255;\r
- }\r
- // 値\r
- for (int i = 0; i < size.h; i++) {\r
- out_buf[i* size.w+threshold] = 255;\r
- }\r