void FlowreenAdapter::process() { currentVolumeHandle_ = volInport_.getData(); if (dynamic_cast<const Volume3xFloat*>(currentVolumeHandle_->getRepresentation<Volume>()) != 0) calculateMagnitudes(); else LERROR("supplied VolumeHandle seems to contain no flow data! Cannot proceed."); }
void FlowMagnitudes3D::process() { if (volInport_.isReady() && volInport_.hasChanged()) { currentVolume_ = volInport_.getData(); if (dynamic_cast<const VolumeFlow3D*>(currentVolume_->getRepresentation<VolumeRAM>()) != 0) calculateMagnitudes(); else LERROR("process(): supplied Volume seems to contain no flow data! Cannot proceed."); } }
void canny(FILE* inputImageFile, FILE* outputMagnitudes, FILE* outputPeaks, FILE* outputFinal, double sigma){ Mask mask; int picBuffer[PICSIZE][PICSIZE]; double itsMagnitudes[PICSIZE][PICSIZE]; double maxMagnitude; GradientVector usingGradients; double peaks[PICSIZE][PICSIZE]; double final[PICSIZE][PICSIZE]; readImageTo(picBuffer, inputImageFile); mask = generateSmoothenerMask(sigma); usingGradients = calculateGradients(picBuffer, mask); calculateMagnitudes(usingGradients, mask.radius, itsMagnitudes); maxMagnitude = findMaxValue(itsMagnitudes); scaleImageWithRespectTo(maxMagnitude, itsMagnitudes); findPeaks(itsMagnitudes, usingGradients, mask.radius, peaks); Threshold threshold = getThreshold(itsMagnitudes); applyHysteresisThresholdTo(itsMagnitudes, usingGradients, mask.radius, peaks, threshold, final); writeTo(outputMagnitudes, itsMagnitudes); writeTo(outputPeaks, peaks); writeTo(outputFinal, final); }