Examples of PixelAccessor


Examples of com.lightcrafts.mediax.jai.PixelAccessor

                               WritableRaster dest,
                               Rectangle destRect) {

        Raster source = sources[0];

  PixelAccessor pa = new PixelAccessor(source.getSampleModel(), null);
  PackedImageData srcIm =
            pa.getPackedPixels(source, source.getBounds(), false, false);

  pa = new PixelAccessor(dest.getSampleModel(), null);
  PackedImageData dstIm =
            pa.getPackedPixels(dest, destRect, true, false);

        // src data under kernel, packed in int.
  int[] srcUK = new int [kwPack * kh];

  // sliding the kernel row by row
  // general the packed matrix under the row
  int dheight = destRect.height;
  int dwidth  = destRect.width;

  int sOffset = srcIm.offset;
  int dOffset = dstIm.offset;
  for (int j = 0; j < dheight; j++) {
            int selement, val, dindex, delement;

      // reset srcUK for each row beginning
      // src[sOffset +[-kx:kw-kx, -ky:kh-ky]] placed in srcUK
      //
      for (int m = 0; m < srcUK.length; m++){
          srcUK[m] = 0;
      }
     
      // initial srcUK
      // first shift left the packed bits under the sliding kernel by 1 bit
      // then fill (compute) in the last bit of each row
      for(int i = 0; i < kw -1; i++){
          bitShiftMatrixLeft(srcUK, kh, kwPack); // expand for speedup?
    int lastCol = kwPack - 1;
    int bitLoc  = srcIm.bitOffset + i;
    int byteLoc = bitLoc >> 3;
    bitLoc = 7 - (bitLoc & 7);
    for(int m=0, sOffsetB = sOffset;
        m < kh;
        m++, sOffsetB += srcIm.lineStride){

      selement = (int)srcIm.data[sOffsetB + byteLoc];
      val = (selement >> bitLoc) & 0x1;
      srcUK[lastCol] |= val;
      lastCol += kwPack;
    }
      }

      // same as above
      // also setting dest
      for (int i = 0; i < dwidth; i++){

          bitShiftMatrixLeft(srcUK, kh, kwPack); // expand for speedup?
    int lastCol = kwPack - 1;
    int bitLoc  = srcIm.bitOffset + i + kw -1;
    int byteLoc = bitLoc >> 3;
    bitLoc = 7 - (bitLoc & 7);
    for(int m=0, sOffsetB = sOffset;
        m < kh;
        m++, sOffsetB += srcIm.lineStride){

      selement = (int)srcIm.data[sOffsetB + byteLoc];
      val = (selement >> bitLoc) & 0x1;
      srcUK[lastCol] |= val;
      lastCol += kwPack;
    }

    // set dest bits
    for (int m = 0; m < srcUK.length; m++){
        if ((srcUK[m] & kdataPack[m]) != 0){
              int dBitLoc = dstIm.bitOffset + i;
          int dshift  = 7 - (dBitLoc & 7);
          int dByteLoc= (dBitLoc >> 3) + dOffset;
          delement  = (int)dstIm.data[dByteLoc];
          delement |= (0x1) << dshift;
          dstIm.data[dByteLoc] = (byte)delement;
          break;
        }
    }

      }
            sOffset += srcIm.lineStride;
            dOffset += dstIm.lineStride;
        }
  pa.setPackedPixels(dstIm);
    }
View Full Code Here

Examples of com.lightcrafts.mediax.jai.PixelAccessor

    protected void accumulateStatistics(String name,
                                        Raster source,
                                        Object stats) {
        if(!isInitialized) {
            srcPA = new PixelAccessor(getSourceImage(0));
            srcSampleType = srcPA.sampleType == PixelAccessor.TYPE_BIT ?
                DataBuffer.TYPE_BYTE : srcPA.sampleType;

            totalPixelValue = new double[srcPA.numBands];
            totalPixelCount = 0;
View Full Code Here

Examples of com.lightcrafts.mediax.jai.PixelAccessor

        setProperty("JAI.LookupTable", colorMap);
    }

    private void computeHistogram(Raster source) {
        if(!isInitialized) {
            srcPA = new PixelAccessor(getSourceImage(0));
            srcSampleType = srcPA.sampleType == PixelAccessor.TYPE_BIT ?
                DataBuffer.TYPE_BYTE : srcPA.sampleType;
            isInitialized = true;
        }
View Full Code Here

Examples of com.lightcrafts.mediax.jai.PixelAccessor

                               WritableRaster dest,
                               Rectangle destRect) {

        Raster source = sources[0];

  PixelAccessor pa = new PixelAccessor(source.getSampleModel(), null);
  PackedImageData srcIm =
            pa.getPackedPixels(source, source.getBounds(), false, false);

  pa = new PixelAccessor(dest.getSampleModel(), null);
  PackedImageData dstIm =
            pa.getPackedPixels(dest, destRect, true, false);

        // src data under kernel, packed in int.
  int[] srcUK = new int [kwPack * kh];

  // sliding the kernel row by row
  // general the packed matrix under the row
  int dheight = destRect.height;
  int dwidth  = destRect.width;

  int sOffset = srcIm.offset;
  int dOffset = dstIm.offset;
  for (int j = 0; j < dheight; j++) {
            int selement, val, dindex, delement;

      // reset srcUK for each row beginning
      // src[sOffset +[-kx:kw-kx, -ky:kh-ky]] placed in srcUK
      //
      for (int m = 0; m < srcUK.length; m++){
          srcUK[m] = 0;
      }
     
      // initial srcUK
      // first shift left the packed bits under the sliding kernel by 1 bit
      // then fill (compute) in the last bit of each row
      for(int i = 0; i < kw -1; i++){
          bitShiftMatrixLeft(srcUK, kh, kwPack); // expand for speedup?
    int lastCol = kwPack - 1;
    int bitLoc  = srcIm.bitOffset + i;
    int byteLoc = bitLoc >> 3;
    bitLoc = 7 - (bitLoc & 7);
    for(int m=0, sOffsetB = sOffset;
        m < kh;
        m++, sOffsetB += srcIm.lineStride){

      selement = (int)srcIm.data[sOffsetB + byteLoc];
      val = (selement >> bitLoc) & 0x1;
      srcUK[lastCol] |= val;
      lastCol += kwPack;
    }
      }

      // same as above
      // also setting dest
      for (int i = 0; i < dwidth; i++){

          bitShiftMatrixLeft(srcUK, kh, kwPack); // expand for speedup?
    int lastCol = kwPack - 1;
    int bitLoc  = srcIm.bitOffset + i + kw -1;
    int byteLoc = bitLoc >> 3;
    bitLoc = 7 - (bitLoc & 7);
    for(int m=0, sOffsetB = sOffset;
        m < kh;
        m++, sOffsetB += srcIm.lineStride){

      selement = (int)srcIm.data[sOffsetB + byteLoc];
      val = (selement >> bitLoc) & 0x1;
      srcUK[lastCol] |= val;
      lastCol += kwPack;
    }


    int dBitLoc = dstIm.bitOffset + i;
    int dshift  = 7 - (dBitLoc & 7);
    int dByteLoc= (dBitLoc >> 3) + dOffset;
    delement  = (int)dstIm.data[dByteLoc];
    delement |= (0x1) << dshift;

    for (int m = 0; m < srcUK.length; m++){
        if ((srcUK[m] & kdataPack[m]) != kdataPack[m]){
          delement &= ~((0x1) << dshift);
          break;
        }
    }
    dstIm.data[dByteLoc] = (byte)delement;
      }
            sOffset += srcIm.lineStride;
            dOffset += dstIm.lineStride;
        }
  pa.setPackedPixels(dstIm);
    }
View Full Code Here

Examples of com.lightcrafts.mediax.jai.PixelAccessor

                            Rectangle destRect) {
        if (colorMap == null)
            train();

        if(!isInitialized) {
            srcPA = new PixelAccessor(getSourceImage(0));
            srcSampleType = srcPA.sampleType == PixelAccessor.TYPE_BIT ?
                DataBuffer.TYPE_BYTE : srcPA.sampleType;
            isInitialized = true;
        }

        UnpackedImageData uid =
            srcPA.getPixels(sources[0], destRect,
                            srcSampleType, false);
        Rectangle rect = uid.rect;
        byte[][] data = uid.getByteData();
        int srcLineStride = uid.lineStride;
        int srcPixelStride = uid.pixelStride;
        byte[] rBand = data[0];
        byte[] gBand = data[1];
        byte[] bBand = data[2];

        int lastLine = rect.height * srcLineStride + uid.bandOffsets[0];

        if (destPA == null)
            destPA = new PixelAccessor(this);

        UnpackedImageData destUid =
            destPA.getPixels(dest, destRect,
                             sampleModel.getDataType(), false);

View Full Code Here

Examples of javax.media.jai.PixelAccessor

        setProperty("JAI.LookupTable", colorMap);
    }

    private void computeHistogram(Raster source) {
        if(!isInitialized) {
            srcPA = new PixelAccessor(getSourceImage(0));
            srcSampleType = srcPA.sampleType == PixelAccessor.TYPE_BIT ?
                DataBuffer.TYPE_BYTE : srcPA.sampleType;
            isInitialized = true;
        }
View Full Code Here

Examples of javax.media.jai.PixelAccessor


    // speed up for the case of 4x4
    // and data buffer bitOffset is 0 or 4
    private void byteLoop4x4(Raster source, WritableRaster dest, Rectangle  destRect) {
        PixelAccessor pa = new PixelAccessor(source.getSampleModel(), null);
  PackedImageData pid =
            pa.getPackedPixels(source, source.getBounds(), false, false);

  if(pid.bitOffset % 4 !=0){
     // special treatment only for offsets 0 and 4
     byteLoop(source, dest, destRect);
     return;
View Full Code Here

Examples of javax.media.jai.PixelAccessor


    // same as SubsampleBinaryToGray, and change byteLoop to protected in superclass?
    // extends that and save this? using prote
    private void byteLoop(Raster source, WritableRaster dest, Rectangle  destRect) {
        PixelAccessor pa = new PixelAccessor(source.getSampleModel(), null);
  PackedImageData pid =
            pa.getPackedPixels(source, source.getBounds(), false, false);
  byte[] sourceData   = pid.data;
        int sourceDBOffset  = pid.offset;
  int dx  = destRect.x;        int dy  = destRect.y;
  int dwi = destRect.width;    int dhi = destRect.height;
        int sourceTransX = pid.rect.x;   // source.getSampleModelTranslateX();
View Full Code Here

Examples of javax.media.jai.PixelAccessor

              Rectangle rect,
              double[] backgroundValues) {
  rect = rect.intersection(raster.getBounds());
  int numBands = raster.getSampleModel().getNumBands();
        SampleModel sm = raster.getSampleModel();
        PixelAccessor accessor = new PixelAccessor(sm, null);

        if (isBinary(sm)) {
            //fill binary data
            byte value = (byte)(((int)backgroundValues[0]) & 1);
            if (value == 0)
                return;
            int rectX = rect.x;
            int rectY = rect.y;
            int rectWidth = rect.width;
            int rectHeight = rect.height;

            int dx = rectX - raster.getSampleModelTranslateX();
            int dy = rectY - raster.getSampleModelTranslateY();

            DataBuffer dataBuffer = raster.getDataBuffer();
            MultiPixelPackedSampleModel mpp = (MultiPixelPackedSampleModel)sm;
            int lineStride = mpp.getScanlineStride();
            int eltOffset = dataBuffer.getOffset() + mpp.getOffset(dx, dy);
            int bitOffset = mpp.getBitOffset(dx);

            switch(sm.getDataType()) {
            case DataBuffer.TYPE_BYTE:
                {
                    byte[] data = ((DataBufferByte)dataBuffer).getData();
                    int bits = bitOffset & 7;
                    int otherBits = (bits == 0) ? 0: 8 - bits;

                    byte mask = (byte)(255 >> bits);
                    int lineLength = (rectWidth - otherBits) / 8;
                    int bits1 = (rectWidth - otherBits) & 7;
                    byte mask1 = (byte)(255 << (8 - bits1));
                    // If operating within a single byte, merge masks into one
                    // and don't apply second mask after while loop
                    if (lineLength == 0) {
                        mask &= mask1;
                        bits1 = 0;
                    }

                    for (int y = 0; y < rectHeight; y++) {
                        int start = eltOffset;
                        int end = start + lineLength;
                        if (bits != 0)
                            data[start++] |= mask;
                        while (start < end)
                            data[start++] = (byte)255;
                        if (bits1 != 0)
                            data[start] |= mask1;
                        eltOffset += lineStride;
                    }
                    break;
                }
            case DataBuffer.TYPE_USHORT:
                {
                    short[] data = ((DataBufferUShort)dataBuffer).getData();
                    int bits = bitOffset & 15;
                    int otherBits = (bits == 0) ? 0: 16 - bits;

                    short mask = (short)(65535 >> bits);
                    int lineLength = (rectWidth - otherBits) / 16;
                    int bits1 = (rectWidth - otherBits) & 15;
                    short mask1 = (short)(65535 << (16 - bits1));
                    // If operating within a single byte, merge masks into one
                    // and don't apply second mask after while loop
                    if (lineLength == 0) {
                        mask &= mask1;
                        bits1 = 0;
                    }

                    for (int y = 0; y < rectHeight; y++) {
                        int start = eltOffset;
                        int end = start + lineLength;
                        if (bits != 0)
                            data[start++] |= mask;
                        while (start < end)
                            data[start++] = (short)0xFFFF;
                        if (bits1 != 0)
                            data[start++] |= mask1;
                        eltOffset += lineStride;
                    }
                    break;
                }
            case DataBuffer.TYPE_INT:
                {
                    int[] data = ((DataBufferInt)dataBuffer).getData();
                    int bits = bitOffset & 31;
                    int otherBits = (bits == 0) ? 0: 32 - bits;

                    int mask = 0xFFFFFFFF >> bits;
                    int lineLength = (rectWidth - otherBits) / 32;
                    int bits1 = (rectWidth - otherBits) & 31;
                    int mask1 = 0xFFFFFFFF << (32 - bits1);
                    // If operating within a single byte, merge masks into one
                    // and don't apply second mask after while loop
                    if (lineLength == 0) {
                        mask &= mask1;
                        bits1 = 0;
                    }

                    for (int y = 0; y < rectHeight; y++) {
                        int start = eltOffset;
                        int end = start + lineLength;
                        if (bits != 0)
                            data[start++] |= mask;
                        while (start < end)
                            data[start++] = 0xFFFFFFFF;
                        if (bits1 != 0)
                            data[start++] |= mask1;
                        eltOffset += lineStride;
                    }
                    break;
                }

            }
        } else {
            int srcSampleType = accessor.sampleType == PixelAccessor.TYPE_BIT ?
                DataBuffer.TYPE_BYTE : accessor.sampleType;
            UnpackedImageData uid = accessor.getPixels(raster, rect,
                                                    srcSampleType, false);
            rect = uid.rect;
            int lineStride = uid.lineStride;
            int pixelStride = uid.pixelStride;
View Full Code Here

Examples of javax.media.jai.PixelAccessor

    protected void accumulateStatistics(String name,
                                        Raster source,
                                        Object stats) {
        if(!isInitialized) {
            srcPA = new PixelAccessor(getSourceImage(0));
            srcSampleType = srcPA.sampleType == PixelAccessor.TYPE_BIT ?
                DataBuffer.TYPE_BYTE : srcPA.sampleType;

            totalPixelValue = new double[srcPA.numBands];
            totalPixelCount = 0;
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.