Esempio n. 1
0
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.");
}
Esempio n. 2
0
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.");
    }
}
Esempio n. 3
0
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);
}