OpenCVAmplitudeRescaler.java 文件源码

java
阅读 23 收藏 0 点赞 0 评论 0

项目:rastertheque 作者:
@Override
    public void execute(Raster raster, Map<Key, Serializable> params,Hints hints, ProgressListener listener) {


        double[] minMax = null;
        if(params != null){
            if(params.containsKey(KEY_MINMAX)){
                 minMax = (double[]) params.get(KEY_MINMAX);                                    
            }
        }

        final int raster_width  = raster.getDimension().width();
        final int raster_height = raster.getDimension().height();

        final int pixelAmount = raster_width * raster_height;

        if(minMax == null){
            final Mat srcMat = matAccordingToDatatype(
                    raster.getBands().get(0).datatype(),
                    raster.getData(),
                    raster_width,
                    raster_height);

            MinMaxLocResult result = Core.minMaxLoc(srcMat);
            minMax = new double[]{result.minVal, result.maxVal};
        }

        int[] pixels = new int[pixelAmount];

        final ByteBufferReader reader = new ByteBufferReader(raster.getData().array(), ByteOrder.nativeOrder());

//      Log.d(OpenCVAmplitudeRescaler.class.getSimpleName(), "rawdata min "+minMax[0] +" max "+minMax[1]);


        for (int i = 0; i < pixelAmount; i++) {

            double d = ByteBufferReaderUtil.getValue(reader, raster.getBands().get(0).datatype());

            pixels[i] = pixelValueForGrayScale(d, minMax[0], minMax[1]);

        }

        ByteBuffer buffer = ByteBuffer.allocate(pixels.length * 4);

        buffer.asIntBuffer().put(pixels);

        raster.setData(buffer);
    }
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号