/** * ラスタの異解像度間コピーをします。 * @param i_input * 入力ラスタ * @param i_top * 入力ラスタの左上点を指定します。 * @param i_left * 入力ラスタの左上点を指定します。 * @param i_skip * skip値。1なら等倍、2なら1/2倍、3なら1/3倍の偏重の画像を出力します。 * @param o_output * 出力先ラスタ。このラスタの解像度は、w=(i_input.w-i_left)/i_skip,h=(i_input.h-i_height)/i_skipを満たす必要があります。 * 出力先ラスタと入力ラスタのバッファタイプは、同じである必要があります。 */ public void copyTo(int i_left, int i_top, int i_skip, NyARGrayscaleRaster o_output) { Debug.Assert(this.getSize().isInnerSize(i_left + o_output.getWidth() * i_skip, i_top + o_output.getHeight() * i_skip)); Debug.Assert(this.isEqualBufferType(o_output.getBufferType())); this._impl.copyTo(this, i_left, i_top, i_skip, o_output); return; }
/** * * @param i_ref_raster * 基本画像 * @param i_ref_raster_distortion * 歪み解除オブジェクト(nullの場合歪み解除を省略) * @param i_ref_rob_raster * エッジ探索用のROB画像 * @param */ public NyARVectorReader_INT1D_GRAY_8(NyARGrayscaleRaster i_ref_raster,NyARCameraDistortionFactor i_ref_raster_distortion,NyARGrayscaleRaster i_ref_rob_raster) : base() { Debug.Assert (i_ref_raster.getBufferType() == NyARBufferType.INT1D_GRAY_8); Debug.Assert (i_ref_rob_raster.getBufferType() == NyARBufferType.INT1D_GRAY_8); this.initInstance(i_ref_raster, i_ref_raster_distortion, i_ref_rob_raster,new NyARContourPickup()); }
public void doFilter(NyARGrayscaleRaster i_input, NyARBinRaster i_output) { Debug.Assert(i_input.getBufferType() == NyARBufferType.INT1D_GRAY_8); Debug.Assert(i_output.getBufferType() == NyARBufferType.INT1D_BIN_8); int[] out_buf = (int[])i_output.getBuffer(); int[] in_buf = (int[])i_input.getBuffer(); NyARIntSize s = i_input.getSize(); int th = this._threshold; int bp = s.w * s.h - 1; int pix_count = s.h * s.w; int pix_mod_part = pix_count - (pix_count % 8); for (bp = pix_count - 1; bp >= pix_mod_part; bp--) { out_buf[bp] = (in_buf[bp] & 0xff) <= th?0:1; } //タイリング for (; bp >= 0;) { out_buf[bp] = (in_buf[bp] & 0xff) <= th?0:1; bp--; out_buf[bp] = (in_buf[bp] & 0xff) <= th?0:1; bp--; out_buf[bp] = (in_buf[bp] & 0xff) <= th?0:1; bp--; out_buf[bp] = (in_buf[bp] & 0xff) <= th?0:1; bp--; out_buf[bp] = (in_buf[bp] & 0xff) <= th?0:1; bp--; out_buf[bp] = (in_buf[bp] & 0xff) <= th?0:1; bp--; out_buf[bp] = (in_buf[bp] & 0xff) <= th?0:1; bp--; out_buf[bp] = (in_buf[bp] & 0xff) <= th?0:1; bp--; } return; }
public void doFilter(NyARGrayscaleRaster i_input, NyARBinRaster i_output) { Debug.Assert(i_input.getBufferType()==NyARBufferType.INT1D_GRAY_8); Debug.Assert(i_output.getBufferType()==NyARBufferType.INT1D_BIN_8); int[] out_buf = (int[]) i_output.getBuffer(); int[] in_buf = (int[]) i_input.getBuffer(); NyARIntSize s=i_input.getSize(); int th=this._threshold; int bp =s.w*s.h-1; int pix_count =s.h*s.w; int pix_mod_part=pix_count-(pix_count%8); for(bp=pix_count-1;bp>=pix_mod_part;bp--){ out_buf[bp]=(in_buf[bp] & 0xff)<=th?0:1; } //タイリング for (;bp>=0;) { out_buf[bp]=(in_buf[bp] & 0xff)<=th?0:1; bp--; out_buf[bp]=(in_buf[bp] & 0xff)<=th?0:1; bp--; out_buf[bp]=(in_buf[bp] & 0xff)<=th?0:1; bp--; out_buf[bp]=(in_buf[bp] & 0xff)<=th?0:1; bp--; out_buf[bp]=(in_buf[bp] & 0xff)<=th?0:1; bp--; out_buf[bp]=(in_buf[bp] & 0xff)<=th?0:1; bp--; out_buf[bp]=(in_buf[bp] & 0xff)<=th?0:1; bp--; out_buf[bp]=(in_buf[bp] & 0xff)<=th?0:1; bp--; } return; }