@Override public void apply(Input srcImg, Output dstImg, GrayU8 mask) { init(srcImg, dstImg); x0 = 0;y0 = 0;x1 = dstImg.width;y1 = dstImg.height; if( renderAll ) renderAll(mask); else applyOnlyInside(mask); }
public void renderAll() { // todo TO make this faster first apply inside the region which can process the fast border // then do the slower border thingy for( int y = y0; y < y1; y++ ) { int indexDst = dstImg.startIndex + dstImg.stride*y + x0; for( int x = x0; x < x1; x++ , indexDst++ ) { Point2D_F32 s = map[indexDst]; assign(indexDst,interp.get(s.x, s.y)); } } }
public void applyOnlyInside() { float maxWidth = srcImg.getWidth()-1; float maxHeight = srcImg.getHeight()-1; for( int y = y0; y < y1; y++ ) { int indexDst = dstImg.startIndex + dstImg.stride*y + x0; for( int x = x0; x < x1; x++ , indexDst++ ) { Point2D_F32 s = map[indexDst]; if( s.x >= 0 && s.x <= maxWidth && s.y >= 0 && s.y <= maxHeight ) { assign(indexDst,interp.get(s.x, s.y)); } } } }
@Override public void apply(Input srcImg, Output dstImg) { init(srcImg, dstImg); x0 = 0;y0 = 0;x1 = dstImg.width;y1 = dstImg.height; if( renderAll ) renderAll(); else applyOnlyInside(); }
public void applyOnlyInside( GrayU8 mask ) { float maxWidth = srcImg.getWidth()-1; float maxHeight = srcImg.getHeight()-1; for( int y = y0; y < y1; y++ ) { int indexDst = dstImg.startIndex + dstImg.stride*y + x0; int indexMsk = mask.startIndex + mask.stride*y + x0; for( int x = x0; x < x1; x++ , indexDst++ , indexMsk++ ) { Point2D_F32 s = map[indexDst]; if( s.x >= 0 && s.x <= maxWidth && s.y >= 0 && s.y <= maxHeight ) { assign(indexDst,interp.get(s.x, s.y)); mask.data[indexMsk] = 1; } else { mask.data[indexMsk] = 0; } } } }
@Override public void apply(Input srcImg, Output dstImg, int dstX0, int dstY0, int dstX1, int dstY1) { init(srcImg, dstImg); x0 = dstX0;y0 = dstY0;x1 = dstX1;y1 = dstY1; if( renderAll ) renderAll(); else applyOnlyInside(); }
public void renderAll( GrayU8 mask ) { float maxWidth = srcImg.getWidth()-1; float maxHeight = srcImg.getHeight()-1; for( int y = y0; y < y1; y++ ) { int indexDst = dstImg.startIndex + dstImg.stride*y + x0; int indexMsk = mask.startIndex + mask.stride*y + x0; for( int x = x0; x < x1; x++ , indexDst++ , indexMsk++ ) { Point2D_F32 s = map[indexDst]; assign(indexDst,interp.get(s.x, s.y)); if( s.x >= 0 && s.x <= maxWidth && s.y >= 0 && s.y <= maxHeight ) { mask.data[indexMsk] = 1; } else { mask.data[indexMsk] = 0; } } } }