public double getDefaultLevel(boolean pixelPadding) { if (isImageAvailable()) { double min = getMinValue(null, pixelPadding); return min + (getMaxValue(null, pixelPadding) - min) / 2.0; } return 0.0f; }
protected void findMinMaxValues(PlanarImage img, boolean exclude8bitImage) throws OutOfMemoryError { // This function can be called several times from the inner class Load. // Do not compute min and max it has already be done if (img != null && !isImageAvailable()) { if (ImageConversion.convertToDataType(img.type()) == DataBuffer.TYPE_BYTE && exclude8bitImage) { this.minPixelValue = 0.0; this.maxPixelValue = 255.0; } else { MinMaxLocResult val = ImageProcessor.findMinMaxValues(img.toMat()); if (val != null) { this.minPixelValue = val.minVal; this.maxPixelValue = val.maxVal; } // Handle special case when min and max are equal, ex. black image // + 1 to max enables to display the correct value if (this.minPixelValue.equals(this.maxPixelValue)) { this.maxPixelValue += 1.0; } } } }
ImageElement imgElement = ((ImageElement) media); Map<String, Object> params = null; if (!imgElement.isImageAvailable()) {
removeParam(P_PR_ELEMENT); if (img != null) { if (!img.isImageAvailable()) { setParam(P_IMAGE_ELEMENT, img); if (img != null) { if (!img.isImageAvailable()) {
@Override public void stateChanged(BoundedRangeModel model) { ViewCanvas<ImageElement> view2d = null; Series<ImageElement> series = null; SynchCineEvent mediaEvent = null; ImageElement image = null; if (selectedView2dContainer != null) { view2d = (ViewCanvas<ImageElement>) selectedView2dContainer.getSelectedImagePane(); } if (view2d != null && view2d.getSeries() instanceof Series) { series = (Series<ImageElement>) view2d.getSeries(); if (series != null) { // Model contains display value, value-1 is the index value of a sequence int index = model.getValue() - 1; image = series.getMedia(index, (Filter<ImageElement>) view2d.getActionValue(ActionW.FILTERED_SERIES.cmd()), view2d.getCurrentSortComparator()); mediaEvent = new SynchCineEvent(view2d, image, index); // Ensure to load image before calling the default preset (requires pixel min and max) if (image != null && !image.isImageAvailable()) { image.getImage(); } } } firePropertyChange(ActionW.SYNCH.cmd(), null, mediaEvent); if (image != null) { fireSeriesViewerListeners( new SeriesViewerEvent(selectedView2dContainer, series, image, EVENT.SELECT)); } }
@Override public void handleImageOpEvent(ImageOpEvent event) { OpEvent type = event.getEventType(); if (OpEvent.ImageChange.equals(type)) { setParam(P_IMAGE_ELEMENT, event.getImage()); } else if (OpEvent.ResetDisplay.equals(type) || OpEvent.SeriesChange.equals(type)) { ImageElement img = event.getImage(); setParam(P_IMAGE_ELEMENT, img); if (img != null) { if (!img.isImageAvailable()) { // Ensure to load image before calling the default preset that requires pixel min and max img.getImage(); } boolean pixelPadding = LangUtil.getNULLtoTrue((Boolean) getParam(ActionW.IMAGE_PIX_PADDING.cmd())); setParam(ActionW.WINDOW.cmd(), img.getDefaultWindow(pixelPadding)); setParam(ActionW.LEVEL.cmd(), img.getDefaultLevel(pixelPadding)); setParam(ActionW.LEVEL_MIN.cmd(), img.getMinValue(null, pixelPadding)); setParam(ActionW.LEVEL_MAX.cmd(), img.getMaxValue(null, pixelPadding)); } } }