private static void writeRasterInRaw(PlanarImage image, FileRawImage[] newSeries, ImageCV[] builImgs, ViewParameter params, int dstHeight, int imgIndex) throws IOException { ImageCV img = ImageProcessor.getRotatedImage(image.toMat(), params.rotateCvType); if (newSeries != null && img != null && img.height() == newSeries.length) { if (newSeries[0] == null) { File dir = new File(MPR_CACHE_DIR, params.seriesUID); dir.mkdirs(); for (int i = 0; i < newSeries.length; i++) { newSeries[i] = new FileRawImage(new File(dir, "mpr_" + (i + 1) + ".wcv"));//$NON-NLS-1$ //$NON-NLS-2$ builImgs[i] = new ImageCV(dstHeight, img.width(), img.type()); } } for (int j = 0; j < newSeries.length; j++) { img.row(j).copyTo(builImgs[j].row(imgIndex - 1)); } } }
public static ImageCV overlay(Mat source, RenderedImage imgOverlay, Color color) { ImageCV srcImg = ImageCV.toImageCV(Objects.requireNonNull(source)); Mat mask = ImageConversion.toMat(Objects.requireNonNull(imgOverlay)); if (isGray(color) && srcImg.channels() == 1) { Mat grayImg = new Mat(srcImg.size(), CvType.CV_8UC1, new Scalar(color.getRed())); ImageCV dstImg = new ImageCV(); srcImg.copyTo(dstImg); grayImg.copyTo(dstImg, mask); return dstImg; } ImageCV dstImg = new ImageCV(); if (srcImg.channels() < 3) { Imgproc.cvtColor(srcImg, dstImg, Imgproc.COLOR_GRAY2BGR); } else { srcImg.copyTo(dstImg); } Mat colorImg = new Mat(dstImg.size(), CvType.CV_8UC3, new Scalar(color.getBlue(), color.getGreen(), color.getRed())); colorImg.copyTo(dstImg, mask); return dstImg; }
public static ImageCV minStack(List<ImageElement> sources) { if (sources.size() > 1) { ImageElement firstImg = sources.get(0); ImageCV dstImg = new ImageCV(); PlanarImage img = firstImg.getImage(null, false); img.toMat().copyTo(dstImg); int numbSrc = sources.size(); for (int i = 1; i < numbSrc; i++) { ImageElement imgElement = sources.get(i); PlanarImage image = imgElement.getImage(null, false); if (image.width() != dstImg.width() && image.height() != dstImg.height()) { continue; } if (image instanceof Mat) { Core.min(dstImg, (Mat) image, dstImg); } } return dstImg; } return null; }
ImageCV mat = ImageConversion.toMat(renderedImage, param.getSourceRegion(), false); int cvType = mat.type(); int elemSize = (int) mat.elemSize1(); int channels = CvType.channels(cvType); params[Imgcodecs.DICOM_PARAM_WIDTH] = mat.width(); // Image width params[Imgcodecs.DICOM_PARAM_HEIGHT] = mat.height(); // Image height params[Imgcodecs.DICOM_PARAM_BYTES_PER_LINE] = mat.width() * elemSize; // Bytes per line params[Imgcodecs.DICOM_PARAM_ALLOWED_LOSSY_ERROR] = j2kParams.isLossless() ? 0 : 1;
public static ImageCV toImageCV(Mat source) { if (source instanceof ImageCV) { return (ImageCV) source; } ImageCV dstImg = new ImageCV(); source.assignTo(dstImg); return dstImg; }
public static ImageCV crop(Mat source, Rectangle area) { return ImageCV .toImageCV(Objects.requireNonNull(source).submat(new Rect(area.x, area.y, area.width, area.height))); }
ImageCV mat = new ImageCV(raster.getHeight(), raster.getWidth(), CvType.CV_8UC1); mat.put(0, 0, getUnpackedBinaryData(raster, raster.getBounds())); return mat; Mat g = new Mat(raster.getHeight(), raster.getWidth(), CvType.CV_8UC1); g.put(0, 0, ((DataBufferByte) buf).getData(1)); ImageCV r = new ImageCV(raster.getHeight(), raster.getWidth(), CvType.CV_8UC1); r.put(0, 0, ((DataBufferByte) buf).getData(0)); List<Mat> mv = toBGR ? Arrays.asList(b, g, r) : Arrays.asList(r, g, b); ImageCV dstImg = new ImageCV(raster.getHeight(), raster.getWidth(), CvType.CV_8UC3); Core.merge(mv, dstImg); return dstImg; ImageCV mat = new ImageCV(raster.getHeight(), raster.getWidth(), CvType.CV_8UC(samples.length)); mat.put(0, 0, ((DataBufferByte) buf).getData()); if (toBGR && Arrays.equals(offsets, new int[] { 0, 1, 2 })) { ImageCV dstImg = new ImageCV(); Imgproc.cvtColor(mat, dstImg, Imgproc.COLOR_RGB2BGR); return dstImg; } else if (!toBGR && Arrays.equals(offsets, new int[] { 2, 1, 0 })) { ImageCV dstImg = new ImageCV(); Imgproc.cvtColor(mat, dstImg, Imgproc.COLOR_BGR2RGB); return dstImg; ImageCV mat = new ImageCV(raster.getHeight(), raster.getWidth(), CvType.CV_16UC(samples.length)); mat.put(0, 0, ((DataBufferUShort) buf).getData()); return mat; } else if (buf instanceof DataBufferShort) { ImageCV mat = new ImageCV(raster.getHeight(), raster.getWidth(), CvType.CV_16SC(samples.length));
public static ImageCV maxStack(List<ImageElement> sources) { if (sources.size() > 1) { ImageElement firstImg = sources.get(0); ImageCV dstImg = new ImageCV(); PlanarImage img = firstImg.getImage(null, false); img.toMat().copyTo(dstImg); int numbSrc = sources.size(); for (int i = 1; i < numbSrc; i++) { ImageElement imgElement = sources.get(i); PlanarImage image = imgElement.getImage(null, false); if (image.width() != dstImg.width() && image.height() != dstImg.height()) { continue; } if (image instanceof Mat) { Core.max(dstImg, (Mat) image, dstImg); } } return dstImg; } return null; } }
ImageCV mat = ImageConversion.toMat(renderedImage, param.getSourceRegion(), false); int cvType = mat.type(); int elemSize = (int) mat.elemSize1(); int channels = CvType.channels(cvType); params[Imgcodecs.DICOM_PARAM_WIDTH] = mat.width(); // Image width params[Imgcodecs.DICOM_PARAM_HEIGHT] = mat.height(); // Image height params[Imgcodecs.DICOM_PARAM_BYTES_PER_LINE] = mat.width() * elemSize; // Bytes per line params[Imgcodecs.DICOM_PARAM_ALLOWED_LOSSY_ERROR] =
public static ImageCV rescaleToByte(Mat source, double alpha, double beta) { ImageCV dstImg = new ImageCV(); Objects.requireNonNull(source).convertTo(dstImg, CvType.CV_8U, alpha, beta); return dstImg; }
public static ImageCV readImageWithCvException(File file) { if (!file.canRead()) { return null; } Mat img = Imgcodecs.imread(file.getPath()); if (img.width() < 1 || img.height() < 1) { throw new CvException("OpenCV cannot read " + file.getPath()); } return ImageCV.toImageCV(img); }
public static ImageCV applyCropMask(Mat source, Rectangle b, double alpha) { Mat srcImg = Objects.requireNonNull(source); ImageCV dstImg = new ImageCV(); source.copyTo(dstImg); if(b.getY() > 0) { Imgproc.rectangle(dstImg, new Point(0.0, 0.0), new Point(dstImg.width(), b.getMinY() ), new Scalar(0), -1); } if(b.getX() > 0) { Imgproc.rectangle(dstImg, new Point(0.0, b.getMinY()), new Point(b.getMinX(), b.getMaxY() ), new Scalar(0), -1); } if(b.getX() < dstImg.width()) { Imgproc.rectangle(dstImg, new Point(b.getMaxX(), b.getMinY()), new Point(dstImg.width(), b.getMaxY() ), new Scalar(0), -1); } if(b.getY() < dstImg.height()) { Imgproc.rectangle(dstImg, new Point(0.0, b.getMaxY()), new Point(dstImg.width(), dstImg.height() ), new Scalar(0), -1); } Core.addWeighted(dstImg, alpha, srcImg, 1- alpha, 0.0, dstImg); return dstImg; }
ImageCV mat = ImageConversion.toMat(renderedImage, param.getSourceRegion(), false); int cvType = mat.type(); int elemSize = (int) mat.elemSize1(); int channels = CvType.channels(cvType); params[Imgcodecs.DICOM_PARAM_WIDTH] = mat.width(); // Image width params[Imgcodecs.DICOM_PARAM_HEIGHT] = mat.height(); // Image height params[Imgcodecs.DICOM_PARAM_BYTES_PER_LINE] = mat.width() * elemSize; // Bytes per line params[Imgcodecs.DICOM_PARAM_ALLOWED_LOSSY_ERROR] = 0; // Allowed lossy error for jpeg-ls
public static ImageCV applyShutter(Mat source, RenderedImage imgOverlay, Color color) { ImageCV srcImg = ImageCV.toImageCV(Objects.requireNonNull(source)); Mat mask = ImageConversion.toMat(Objects.requireNonNull(imgOverlay)); if (isGray(color) && srcImg.channels() == 1) { Mat grayImg = new Mat(srcImg.size(), CvType.CV_8UC1, new Scalar(color.getRed())); ImageCV dstImg = new ImageCV(); srcImg.copyTo(dstImg); grayImg.copyTo(dstImg, mask); return dstImg; } ImageCV dstImg = new ImageCV(); if (srcImg.channels() < 3) { Imgproc.cvtColor(srcImg, dstImg, Imgproc.COLOR_GRAY2BGR); } else { srcImg.copyTo(dstImg); } Mat colorImg = new Mat(dstImg.size(), CvType.CV_8UC3, new Scalar(color.getBlue(), color.getGreen(), color.getRed())); colorImg.copyTo(dstImg, mask); return dstImg; }
public static ImageCV getRotatedImage(Mat source, double angle, double centerx, double centery) { if (isEqualToZero(angle)) { return ImageCV.toImageCV(source); } Mat srcImg = Objects.requireNonNull(source); Point ptCenter = new Point(centerx, centery); Mat rot = Imgproc.getRotationMatrix2D(ptCenter, -angle, 1.0); ImageCV dstImg = new ImageCV(); // determine bounding rectangle Rect bbox = new RotatedRect(ptCenter, srcImg.size(), -angle).boundingRect(); // double[] matrix = new double[rot.cols() * rot.rows()]; // // adjust transformation matrix // rot.get(0, 0, matrix); // matrix[2] += bbox.width / 2.0 - centerx; // matrix[rot.cols() + 2] += bbox.height / 2.0 - centery; // rot.put(0, 0, matrix); Imgproc.warpAffine(srcImg, dstImg, rot, bbox.size()); return dstImg; }
public static ImageCV combineTwoImages(Mat source, Mat imgOverlay, int transparency) { Mat srcImg = Objects.requireNonNull(source); Mat src2Img = Objects.requireNonNull(imgOverlay); ImageCV dstImg = new ImageCV(); Core.addWeighted(srcImg, 1.0, src2Img, transparency, 0.0, dstImg); return dstImg; }