/**
         * BINラスタをラベリングします。
         * @param i_bin_raster
         * @param o_stack
         * 結果を蓄積するスタックオブジェクトを指定します。
         * 関数は、このオブジェクトに結果を追記します。
         * @return
         * @throws NyARException
         */
        public virtual void labeling(NyARBinRaster i_bin_raster)
        {
            Debug.Assert(i_bin_raster.isEqualBufferType(NyARBufferType.INT1D_BIN_8));
            NyARIntSize size = i_bin_raster.getSize();

            this.imple_labeling(i_bin_raster, 0, 0, 0, size.w, size.h);
        }
        public void doFilter(INyARRgbRaster i_input, NyARBinRaster i_output)
        {
            //INyARBufferReader in_buffer_reader = i_input.getBufferReader();
            //INyARBufferReader out_buffer_reader = i_output.getBufferReader();
            int in_buf_type = i_input.getBufferType();

            NyARIntSize size = i_output.getSize();
            Debug.Assert(i_output.isEqualBufferType(NyARBufferType.INT2D_BIN_8));
            Debug.Assert(checkInputType(in_buf_type) == true);
            Debug.Assert(i_input.getSize().isEqualSize(size.w * 2, size.h * 2) == true);

            int[][] out_buf = (int[][])i_output.getBuffer();


            switch (i_input.getBufferType())
            {
                case NyARBufferType.BYTE1D_B8G8R8_24:
                case NyARBufferType.BYTE1D_R8G8B8_24:
                    convert24BitRgb((byte[])i_input.getBuffer(), out_buf, size);
                    break;
                case NyARBufferType.BYTE1D_B8G8R8X8_32:
                    convert32BitRgbx((byte[])i_input.getBuffer(), out_buf, size);
                    break;
                case NyARBufferType.WORD1D_R5G6B5_16LE:
                    convert16BitRgb565word((short[])i_input.getBuffer(), out_buf, size);
                    break;
                default:
                    throw new NyARException();
            }
            return;
        }
Example #3
0
        public bool getContour(NyARBinRaster i_raster, int i_entry_x, int i_entry_y, NyARIntCoordinates o_coord)
        {
            Debug.Assert(i_raster.isEqualBufferType(NyARBufferType.INT1D_BIN_8));
            NyARIntSize s = i_raster.getSize();

            return(impl_getContour(i_raster, 0, 0, s.w - 1, s.h - 1, 0, i_entry_x, i_entry_y, o_coord));
        }
 public int getContour(NyARBinRaster i_raster, int i_entry_x, int i_entry_y, int i_array_size, int[] o_coord_x, int[] o_coord_y)
 {
     Debug.Assert(i_raster.isEqualBufferType(NyARBufferType.INT1D_BIN_8));
     return(impl_getContour(i_raster, 0, i_entry_x, i_entry_y, i_array_size, o_coord_x, o_coord_y));
 }
 public int getContour(NyARBinRaster i_raster, int i_entry_x, int i_entry_y, int i_array_size, int[] o_coord_x, int[] o_coord_y)
 {
     Debug.Assert(i_raster.isEqualBufferType(NyARBufferType.INT1D_BIN_8));
     return impl_getContour(i_raster, 0, i_entry_x, i_entry_y, i_array_size, o_coord_x, o_coord_y);
 }
 public virtual void labeling(NyARBinRaster i_bin_raster, NyARIntRect i_area)
 {
     Debug.Assert(i_bin_raster.isEqualBufferType(NyARBufferType.INT1D_BIN_8));
     this.imple_labeling(i_bin_raster, 0, i_area.x, i_area.y, i_area.w, i_area.h);
 }
        //所望のラスタからBIN-RLEに変換しながらの低速系も準備しようかな

        /**
         * 単一閾値を使ってGSラスタをBINラスタに変換しながらラベリングします。
         * @param i_gs_raster
         * @param i_top
         * @param i_bottom
         * @param o_stack
         * @return
         * @throws NyARException
         */
        public int labeling(NyARBinRaster i_bin_raster, int i_top, int i_bottom, RleLabelFragmentInfoStack o_stack)
        {
            Debug.Assert(i_bin_raster.isEqualBufferType(NyARBufferType.INT1D_BIN_8));
            return(this.imple_labeling(i_bin_raster, 0, i_top, i_bottom, o_stack));
        }
Example #8
0
 public bool getContour(NyARBinRaster i_raster, NyARIntRect i_area, int i_entry_x, int i_entry_y, NyARIntCoordinates o_coord)
 {
     Debug.Assert(i_raster.isEqualBufferType(NyARBufferType.INT1D_BIN_8));
     return(impl_getContour(i_raster, i_area.x, i_area.y, i_area.x + i_area.w - 1, i_area.h + i_area.y - 1, 0, i_entry_x, i_entry_y, o_coord));
 }