Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

Commit de679f72 authored by Cristina Precup's avatar Cristina Precup
Browse files

inherit a VolumeExplorer instead of an AbstractProcessor - avoids duplications...

inherit a VolumeExplorer instead of an AbstractProcessor - avoids duplications in the required implementation + get dot scribbler coordinates for the segmentation seed
parent 1ea24e8c
......@@ -129,18 +129,18 @@ namespace campvis {
const std::string ItkSegmentation::loggerCat_ = "CAMPVis.modules.classification.ItkSegmentation";
ItkSegmentation::ItkSegmentation()
: AbstractProcessor()
, p_sourceImageID("InputVolume", "Input Volume ID", "volume", DataNameProperty::READ)
, p_targetImageID("OutputGradients", "Output Segmented Volume ID", "segmented_volume", DataNameProperty::WRITE)
, p_segmentationType("SegmentationType", "Segmentation Type", segmentationTypes, 1)
, p_seedX("SeedX", "Seed X", 162, 0, 0, 1)
, p_seedY("SeedY", "Seed Y", 169, 0, 0, 1)
, p_seedZ("SeedZ", "Seed Z", 182, 0, 0, 1)
, p_thresMin("ThresMin", "Min Threshold", 70, 0, 255, 1)
, p_thresMax("ThresMax", "Max Threshold", 130, 0, 255, 1)
ItkSegmentation::ItkSegmentation(IVec2Property* viewportSizeProp)
: VolumeExplorer(viewportSizeProp)
, p_sourceImageID("InputSegmentationVolume", "Input Segmentation Volume ID", "volume", DataNameProperty::READ)
, p_targetImageID("OutputSegmentationVolume", "Output Segmented Volume ID", "segmented_volume", DataNameProperty::WRITE)
, p_segmentationType("SegmentationType", "Segmentation Type", segmentationTypes, 1)
, p_seedX("SeedX", "Seed X", 0, 0, 0, 1)
, p_seedY("SeedY", "Seed Y", 0, 0, 0, 1)
, p_seedZ("SeedZ", "Seed Z", 0, 0, 0, 1)
, p_thresMin("ThresMin", "Min Threshold", 70, 0, 255, 1)
, p_thresMax("ThresMax", "Max Threshold", 130, 0, 255, 1)
{
addProperty(p_sourceImageID);
addProperty(p_sourceImageID, INVALID_RESULT | INVALID_PROPERTIES);
addProperty(p_targetImageID);
addProperty(p_segmentationType, INVALID_RESULT | INVALID_PROPERTIES);
addProperty(p_seedX);
......@@ -148,13 +148,14 @@ namespace campvis {
addProperty(p_seedZ);
addProperty(p_thresMin);
addProperty(p_thresMax);
p_enableScribbling.setValue(true);
}
ItkSegmentation::~ItkSegmentation() {
}
void ItkSegmentation::updateResult(DataContainer& data) {
VolumeExplorer::updateResult(data);
ImageRepresentationLocal::ScopedRepresentation input(data, p_sourceImageID.getValue());
if (input != 0 && input->getParent()->getNumChannels() == 1 && (input->getDimensionality() == 2 || input->getDimensionality() == 3)) {
......@@ -203,7 +204,9 @@ namespace campvis {
validate(INVALID_RESULT);
}
void ItkSegmentation::updateProperties(DataContainer& /*dataContainer*/) {
void ItkSegmentation::updateProperties(DataContainer& data) {
VolumeExplorer::updateProperties(data);
if (p_segmentationType.getOptionValue() == "regionGrowing") {
p_seedX.setVisible(true);
p_seedY.setVisible(true);
......@@ -215,4 +218,27 @@ namespace campvis {
validate(AbstractProcessor::INVALID_PROPERTIES);
}
void ItkSegmentation::onEvent(tgt::Event* e) {
VolumeExplorer::onEvent(e);
if (typeid(*e) == typeid(tgt::MouseEvent)) {
tgt::MouseEvent* me = static_cast<tgt::MouseEvent*>(e);
if (p_enableScribbling.getValue() && (me->modifiers() & tgt::Event::CTRL || me->modifiers() & tgt::Event::ALT)) {
//update the input image for the segmentation (take the one that is explored by the VolumeExplorer)
p_sourceImageID.setValue(p_inputVolume.getValue());
// update the maximum size
p_seedX.setMaxValue(_sliceExtractor.p_xSliceNumber.getMaxValue());
p_seedY.setMaxValue(_sliceExtractor.p_ySliceNumber.getMaxValue());
p_seedZ.setMaxValue(_sliceExtractor.p_zSliceNumber.getMaxValue());
tgt::svec3 voxel;
voxel = tgt::vec3(_yesScribbles[0]);
p_seedX.setValue(voxel.x);
p_seedY.setValue(voxel.y);
p_seedZ.setValue(voxel.z);
}
}
}
}
......@@ -27,31 +27,32 @@
#include <string>
#include "core/pipeline/visualizationprocessor.h"
#include "core/properties/datanameproperty.h"
#include "core/properties/genericproperty.h"
#include "core/properties/floatingpointproperty.h"
#include "core/properties/numericproperty.h"
#include "core/properties/optionproperty.h"
#include "modules/preprocessing/tools/abstractimagefilter.h"
#include "modules/vis/processors/volumeexplorer.h"
namespace campvis {
/**
* Performs segmentation on input image using ITK.
*/
class ItkSegmentation : public AbstractProcessor {
class ItkSegmentation : public VolumeExplorer {
public:
/**
* Constructs a new ItkSegmentation Processor
**/
ItkSegmentation();
ItkSegmentation(IVec2Property* viewportSizeProp);
/**
* Destructor
**/
virtual ~ItkSegmentation();
/// \see AbstractEventHandler::execute()
virtual void onEvent(tgt::Event* e);
/// \see AbstractProcessor::getName()
virtual const std::string getName() const { return "ItkSegmentation"; };
/// \see AbstractProcessor::getDescription()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment