public void updateCropDisplay(AcquireImageInfo imageInfo) { ImageOpNode node = imageInfo.getPreProcessOpManager().getNode(MaskOp.OP_NAME); if (node == null) { node = new MaskOp(); imageInfo.addPreProcessImageOperationAction(node); } else { node.clearIOCache(); } node.setParam(MaskOp.P_SHOW, true); node.setParam(MaskOp.P_SHAPE, imageInfo.getNextValues().getCropZone()); node.setParam(MaskOp.P_ALPHA, 0.7); }
public void removeImageOperationAction(ImageOpNode action) { if (action != null) { boolean remove = operations.remove(action); if (nodes.remove(action.getName()) == null && remove) { for (Entry<String, ImageOpNode> entry : nodes.entrySet()) { if (entry.getValue() == action) { nodes.remove(entry.getKey()); break; } } } } }
@Override public PlanarImage process() { PlanarImage source = getFirstNodeInputImage(); if (source != null && source.width() > 0) { for (int i = 0; i < operations.size(); i++) { ImageOpNode op = operations.get(i); try { if (i > 0) { op.setParam(Param.INPUT_IMG, operations.get(i - 1).getParam(Param.OUTPUT_IMG)); } if (op.isEnabled()) { op.process(); } else { // Skip this operation op.setParam(Param.OUTPUT_IMG, op.getParam(Param.INPUT_IMG)); } } catch (Exception e) { LOGGER.error("Image {} failed: {}", op.getParam(Param.NAME), e); //$NON-NLS-1$ op.setParam(Param.OUTPUT_IMG, op.getParam(Param.INPUT_IMG)); } } } else { clearNodeIOCache(); } return getLastNodeOutputImage(); }
public void addImageOperationAction(ImageOpNode action, Position pos, ImageOpNode positionRef) { if (action != null) { String title = action.getName(); int k = 2; while (nodes.get(title) != null) { title += " " + k; //$NON-NLS-1$ k++; } if (k > 2) { action.setName(title); LOGGER.warn("This name already exists, rename to {}.", title); //$NON-NLS-1$ } nodes.put(title, action); if (positionRef != null) { int index = operations.indexOf(positionRef); if (Position.AFTER.equals(pos)) { index++; } if (index >= 0) { operations.add(index, action); } else { operations.add(action); } } else { operations.add(action); } } }
@Override public boolean setParamValue(String opName, String param, Object value) { if (opName != null && param != null) { ImageOpNode node = getNode(opName); if (node != null) { node.setParam(param, value); return true; } } return false; }
public void applyPreProcess(ViewCanvas<ImageElement> view) { for (ImageOpNode action : postProcessOpManager.getOperations()) { if (preProcessOpManager.getNode(action.getName()) == null) { preProcessOpManager.addImageOperationAction(action.copy()); } } if (view != null) { view.getImageLayer().setImage(view.getImage(), preProcessOpManager); } }
void freezeParentParameters() { SimpleOpManager pManager = view2d.getImageLayer().getDisplayOpManager(); freezeActionsInView.clear(); view2d.copyActionWState(freezeActionsInView); freezeOperations = new SimpleOpManager(); for (ImageOpNode op : pManager.getOperations()) { if (AffineTransformOp.OP_NAME.equals(op.getParam(Param.NAME))) { break; } ImageOpNode operation = op.copy(); freezeOperations.addImageOperationAction(operation); } freezeOperations.setFirstNode(imageLayer.getSourceRenderedImage()); freezeOperations.process(); }
public SimpleOpManager(SimpleOpManager som) { this.operations = new ArrayList<>(); this.nodes = new HashMap<>(); setName(som.name); som.nodes.entrySet().forEach(el -> { Optional.ofNullable(el.getValue()).ifPresent(n -> { ImageOpNode node = n.copy(); operations.add(node); nodes.put(el.getKey(), node); }); }); }
@Override public void clearNodeIOCache() { for (ImageOpNode node : operations) { node.clearIOCache(); } }
@Override public void clearNodeParams() { for (ImageOpNode node : operations) { node.clearParams(); } }
/** * Allow to remove the preprocessing cache * * @param imgSource */ public void resetLastNodeOutputImage() { ImageOpNode node = getLastNode(); if (node != null) { node.setParam(Param.OUTPUT_IMG, null); } }
@Override public PlanarImage getLastNodeOutputImage() { ImageOpNode node = getLastNode(); if (node != null) { return (PlanarImage) node.getParam(Param.OUTPUT_IMG); } return null; }
public ExportImage(ViewCanvas<E> view2d) { super(view2d.getEventManager(), null); this.view2d = view2d; // Remove OpEventListener to avoid reseting some parameters when setting the series this.imageLayer.removeEventListener(imageLayer.getDisplayOpManager()); setFont(FontTools.getFont8()); this.infoLayer = view2d.getInfoLayer().getLayerCopy(this); infoLayer.setVisible(view2d.getInfoLayer().getVisible()); infoLayer.setShowBottomScale(false); // For exporting view, remove Pixel value, Preloading bar, Key Object infoLayer.setDisplayPreferencesValue(LayerAnnotation.PIXEL, false); infoLayer.setDisplayPreferencesValue(LayerAnnotation.PRELOADING_BAR, false); // Copy image operations from view2d SimpleOpManager operations = imageLayer.getDisplayOpManager(); for (ImageOpNode op : view2d.getImageLayer().getDisplayOpManager().getOperations()) { operations.addImageOperationAction(op.copy()); } // Copy the current values of image operations view2d.copyActionWState(actionsInView); setPreferredSize(new Dimension(1024, 1024)); ViewModel model = view2d.getViewModel(); Rectangle2D canvas = new Rectangle2D.Double(0, 0, view2d.getJComponent().getWidth(), view2d.getJComponent().getHeight()); actionsInView.put("origin.image.bound", canvas); //$NON-NLS-1$ actionsInView.put("origin.zoom", view2d.getActionValue(ActionW.ZOOM.cmd())); //$NON-NLS-1$ actionsInView.put("origin.center.offset", new Point2D.Double(model.getModelOffsetX(), model.getModelOffsetY())); //$NON-NLS-1$ // Do not use setSeries() because the view will be reset this.series = view2d.getSeries(); setImage(view2d.getImage()); }
@Override public void applyNextValues() { AcquireImageInfo imageInfo = AcquireObject.getImageInfo(); ImageOpNode node = imageInfo.getPreProcessOpManager().getNode(BrightnessOp.OP_NAME); if (node == null) { node = new BrightnessOp(); imageInfo.addPreProcessImageOperationAction(node); } else { node.clearIOCache(); } node.setParam(BrightnessOp.P_BRIGTNESS_VALUE, (double) imageInfo.getNextValues().getBrightness()); node.setParam(BrightnessOp.P_CONTRAST_VALUE, (double) imageInfo.getNextValues().getContrast()); } }
@Override public void setFirstNode(PlanarImage imgSource) { ImageOpNode node = getFirstNode(); if (node != null) { node.setParam(Param.INPUT_IMG, imgSource); } }
@Override public PlanarImage getFirstNodeInputImage() { ImageOpNode node = getFirstNode(); if (node != null) { return (PlanarImage) node.getParam(Param.INPUT_IMG); } return null; }
private static void changePixelSize(DicomImageElement img, Map<String, Object> actionsInView, double[] prPixSize) { img.setPixelSize(prPixSize[1], prPixSize[0]); actionsInView.put(PRManager.TAG_CHANGE_PIX_CONFIG, true); ZoomOp node = img.getRectifyAspectRatioZoomOp(); if (node != null) { SimpleOpManager process = new SimpleOpManager(); process.addImageOperationAction(node); OpManager preprocessing = (OpManager) actionsInView.get(ActionW.PREPROCESSING.cmd()); if (preprocessing != null) { for (ImageOpNode op : preprocessing.getOperations()) { if (!node.getName().equals(op.getName())) { process.addImageOperationAction(op); } } } actionsInView.put(ActionW.PREPROCESSING.cmd(), process); } }
@Override public void applyNextValues() { AcquireImageInfo imageInfo = getImageInfo(); ImageOpNode node = imageInfo.getPreProcessOpManager().getNode(AutoLevelsOp.OP_NAME); if (node == null) { node = new AutoLevelsOp(); imageInfo.addPreProcessImageOperationAction(node); } else { node.clearIOCache(); } node.setParam(AutoLevelsOp.P_AUTO_LEVEL, imageInfo.getNextValues().isAutoLevel()); }
@Override public void zoom(Double viewScale) { E img = imageLayer.getSourceImage(); ImageOpNode node = imageLayer.getDisplayOpManager().getNode(AffineTransformOp.OP_NAME); if (img != null && node != null) { node.setParam(Param.INPUT_IMG, getSourceImage()); actionsInView.put(ActionW.ZOOM.cmd(), viewScale); super.zoom(Math.abs(viewScale)); updateAffineTransform(); } }