import jp.nyatla.nyartoolkit.core.rasterreader.*;\r
import jp.nyatla.nyartoolkit.core.raster.*;\r
import jp.nyatla.nyartoolkit.core.types.stack.*;\r
-\r
+import jp.nyatla.nyartoolkit.core.labeling.*;\r
\r
/**\r
* bitmapとして利用可能なラベリングイメージです。\r
\r
public final static int COLOR_8_MONO = 5;// 16階調モノクロモード\r
\r
- private int[] _rgb_table;\r
+ private int[] _rgb_table_125;\r
\r
- private int _number_of_color;\r
\r
/**\r
* i_width x i_heightの大きさのイメージを作成します。\r
* @param i_width\r
* @param i_height\r
*/\r
- public LabelingBufferdImage(int i_width, int i_height, int i_color_mode)\r
+ public LabelingBufferdImage(int i_width, int i_height)\r
{\r
super(i_width, i_height, ColorSpace.TYPE_RGB);\r
// RGBテーブルを作成\r
- switch (i_color_mode) {\r
- case COLOR_125_COLOR:\r
- this._rgb_table = new int[125];\r
- this._number_of_color = 125;\r
- for (int i = 0; i < 5; i++) {\r
- for (int i2 = 0; i2 < 5; i2++) {\r
- for (int i3 = 0; i3 < 5; i3++) {\r
- this._rgb_table[((i * 5) + i2) * 5 + i3] = ((((i * 63) << 8) | (i2 * 63)) << 8) | (i3 * 63);\r
- }\r
+ this._rgb_table_125 = new int[125];\r
+ for (int i = 0; i < 5; i++) {\r
+ for (int i2 = 0; i2 < 5; i2++) {\r
+ for (int i3 = 0; i3 < 5; i3++) {\r
+ this._rgb_table_125[((i * 5) + i2) * 5 + i3] = ((((i * 63) << 8) | (i2 * 63)) << 8) | (i3 * 63);\r
}\r
}\r
- break;\r
- case COLOR_256_MONO:\r
+ }\r
+/* case COLOR_256_MONO:\r
this._rgb_table = new int[256];\r
this._number_of_color = 256;\r
for (int i = 0; i < 256; i++) {\r
this._rgb_table[i] = (m << 16) | (m << 8) | m;\r
}\r
break;\r
- }\r
+ }*/\r
}\r
\r
\r
limg = (int[][]) i_raster.getBufferReader().getBuffer();\r
for (int i = 0; i < h; i++) {\r
for (int i2 = 0; i2 < w; i2++) {\r
- this.setRGB(i2, i, this._rgb_table[limg[i][i2] % this._number_of_color]);\r
+ this.setRGB(i2, i,limg[i][i2]);\r
}\r
}\r
return;\r
}\r
-\r
+ /**\r
+ * バイナリラスタ\r
+ * @param i_raster\r
+ * @throws NyARException\r
+ */\r
public void drawImage(NyARBinRaster i_raster) throws NyARException\r
{\r
assert (i_raster.getBufferReader().getBufferType() == INyARBufferReader.BUFFERFORMAT_INT2D_BIN_8);\r
}\r
return;\r
}\r
+ \r
+ /**\r
+ * ラベリングイメージを書く\r
+ * @param i_raster\r
+ * @throws NyARException\r
+ */\r
+ public void drawLabel(NyARLabelingImage i_image) throws NyARException\r
+ {\r
+ int w = this.getWidth();\r
+ int h = this.getHeight();\r
+ // サイズをチェック\r
+ NyARIntSize size = i_image.getSize();\r
+ if (size.h > h || size.w > w) {\r
+ throw new NyARException();\r
+ }\r
+ int[] index_array=i_image.getIndexArray();\r
+\r
+ int[][] limg;\r
+ // イメージの描画\r
+ limg = (int[][]) i_image.getBufferReader().getBuffer();\r
+ for (int i = 0; i < h; i++) {\r
+ for (int i2 = 0; i2 < w; i2++) {\r
+ int t=limg[i][i2]-1;\r
+ if(t<0){\r
+ t=0;\r
+ }else{\r
+ t=index_array[t];\r
+ }\r
+ this.setRGB(i2, i,_rgb_table_125[t% _rgb_table_125.length]);\r
+ }\r
+ }\r
+ return;\r
+ }\r
+ /**\r
+ * \r
+ * @param i_stack\r
+ */\r
+\r
+ public void overlayData(NyARLabelingLabel i_label)\r
+ {\r
+ Graphics g = this.getGraphics();\r
+ g.setColor(Color.red);\r
+ g.drawRect(i_label.clip_l,i_label.clip_t,i_label.clip_r-i_label.clip_l,i_label.clip_b-i_label.clip_t);\r
+ return;\r
+ } \r
+ /**\r
+ * \r
+ * @param i_stack\r
+ */\r
\r
public void overlayData(NyARIntPointStack i_stack)\r
{\r