MuscleMeat

Sticky Wat heeft jouw dag verpest?

gekke mensen:roflol:
 
Probeer in te schatten hoeveel waarde je oom en tante aan de hond hechten...
 
vanavond naar fysio, ben in de vakantie twee x van bed gepleurd :o

sindsdien weer last van me oude blessure (bekken die scheef staan).

ook maar een afspraak gemaakt bij de dokter voor volgende week, heb al dagen last van duizeligheid en licht gevoel in me hoofd.
 
Als het diertje het kan overleven tot na de vakantie zonder pijn. Zou ik even wachten. Maar is het zo ernstig dat het diertje ingeslapen moet worden zou ik toch wel even bellen. Zou toch echt niet van gediend zijn als ik bij thuiskomst te horen krijg.. ja sorry hondje dood maar wou je er niet mee lastig vallen.
 
Ik heb 3 katten, maar het veranderd er toch niks aan als je terug komt. Dood gaat hij/zij toch wel.
Misschien ben ik wat harder daarin, of beter gezegd minder gevoelig in dat opzicht. Ik zou denk ik alleen voor 1e lijns familie terugkomen (dan nog afhankelijk van wie). Verder voor niets of niemand..

Katten kan ik begrijpen, daar heb je imo een compleet andere band mee als en hond.
Maar denk dat je dat pas ziet wanneer je een hond hebt,... vroeger ook altijd heel raar gevonden dat mensen zoveel om en beest konden geven :o
 
Als het diertje het kan overleven tot na de vakantie zonder pijn. Zou ik even wachten. Maar is het zo ernstig dat het diertje ingeslapen moet worden zou ik toch wel even bellen. Zou toch echt niet van gediend zijn als ik bij thuiskomst te horen krijg.. ja sorry hondje dood maar wou je er niet mee lastig vallen.

Haha ik vind het wel een mooi verhaal eigenlijk :D

---------- Post toegevoegd 8 August 2013 om 15:31 ----------

Katten kan ik begrijpen, daar heb je imo een compleet andere band me als en hond.
Maar denk dat je dat pas ziet wanneer je een hond hebt,... vroeger ook altijd heel raar gevonden dat mensen zoveel om en beest konden geven :o

Hmm wederom niet mee eens, heb een hond gehad en eenmaal uit je leven ben je ze zo vergeten. Niet anders dan met katten. Maar met beiden kun je een enorm goede band opbouwen, dat sowieso.
 
Stroomstoring vannacht, nu net pas weer internets.

@Kevinson, de opdracht is de paper van Vincent :o

Hoe debug ik trouwens C++? Ben nu wel lekker aan het proggen met gedit en dan aan het faggen in m'n terminal, maar wanneer ik 'n runtime error krijg als 'Segmentation fault' heb ik dus echt geen idee waar ik moet gaan kijken in m'n code. Dat is net zoveel zeggend als 'DOET UT NIET'.

Dem powers.

Oh dus gewoon die shit implementeren. Is er niets gezegd over die marker/mask? Dus dat je bepaalde afbeelding met gebruiken om te testen of zo?
 
Haha ik vind het wel een mooi verhaal eigenlijk :D

---------- Post toegevoegd 8 August 2013 om 15:31 ----------



Hmm wederom niet mee eens, heb een hond gehad en eenmaal uit je leven ben je ze zo vergeten. Niet anders dan met katten. Maar met beiden kun je een enorm goede band opbouwen, dat sowieso.

nope,.. verschillen we heel veel in,.. heb 2 katten (of liever gezegd mijn ouders toen) gehad voeger,. beesten zijn leuk, maar eigenwijs, luisteren niet of nauwelijks,.. etc etc,..
En hond daarentegen is er echt voo zijn baasje.
tuurlijk kun je ook met een kat een band opbouwen,... maar imo compleet anders,.. en dat zou voor mij niet een band zijn om voor terug te komen van vakantie,.. itt die met een hond
 
nope,.. verschillen we heel veel in,.. heb 2 katten (of liever gezegd mijn ouders toen) gehad voeger,. beesten zijn leuk, maar eigenwijs, luisteren niet of nauwelijks,.. etc etc,..
En hond daarentegen is er echt voo zijn baasje.
tuurlijk kun je ook met een kat een band opbouwen,... maar imo compleet anders,.. en dat zou voor mij niet een band zijn om voor terug te komen van vakantie,.. itt die met een hond

Ja wellicht komt dat omdat je de katten niet zelf hebt kunnen opvoeden. Alle 3 zijn van mij en heb ik zelf op kunnen voeden. Knip in de vingers en ze luisteren. Net zo goed als ik naar hun kan luisteren op het moment dat ze aandacht/vreten/whatever willen. Dus je kunt imo zeker net zo'n goede band opbouwen met een kat, mits je deze net als de hond zelf op kunt voeden. Katten zijn wat dat betreft heel eigenwijs en luisteren niet naar jan en alleman, waar een hond vaak wel de neiging heeft om naar alles met een hogere rang te luisteren, kan de kat echt zoiets hebben van whahaha wie ben jij dan roflol ik ga lekker door met klieren en doen wat van baasje niet mag :D
 
Ja wellicht komt dat omdat je de katten niet zelf hebt kunnen opvoeden. Alle 3 zijn van mij en heb ik zelf op kunnen voeden. Knip in de vingers en ze luisteren. Net zo goed als ik naar hun kan luisteren op het moment dat ze aandacht/vreten/whatever willen. Dus je kunt imo zeker net zo'n goede band opbouwen met een kat, mits je deze net als de hond zelf op kunt voeden. Katten zijn wat dat betreft heel eigenwijs en luisteren niet naar jan en alleman, waar een hond vaak wel de neiging heeft om naar alles met een hogere rang te luisteren, kan de kat echt zoiets hebben van whahaha wie ben jij dan roflol ik ga lekker door met klieren en doen wat van baasje niet mag :D

Zou kunnen, maar betwijfel het,... heb er gewoon minder mee ;)

Wat wél een heeeeel groot pluspunt is, is dat je niet door de regen hoeft om ze uit te laten :D :D
 
de dokter die tegen me oma durft te zeggen dat ze moet gaan hardlopen omdat ze buiten adem is na een klein afstandje lopen.

me oma is over de 70, heeft verschillende ziektes en ziet bijna geen zak meer. yea sure hardlopen
 
Zou kunnen, maar betwijfel het,... heb er gewoon minder mee ;)

Wat wél een heeeeel groot pluspunt is, is dat je niet door de regen hoeft om ze uit te laten :D :D

Ja dat kan natuurlijk :) Ik heb dan weer veel minder met honden. Ze stinken en je moet ermee naar buiten, zo vaak mogelijk het liefst. En ja je kunt ze wassen, maar toch stinken ze nog :D

Maar ik zou voor beiden niet terug komen van vakantie zoals eerder gezegd.

---------- Post toegevoegd 8 August 2013 om 15:44 ----------

de dokter die tegen me oma durft te zeggen dat ze moet gaan hardlopen omdat ze buiten adem is na een klein afstandje lopen.

me oma is over de 70, heeft verschillende ziektes en ziet bijna geen zak meer. yea sure hardlopen

Fijne dokter! :eek:

Weet meteen waar de term hardlopers zijn doodlopers vandaan komt :o
 
Ja dat kan natuurlijk :) Ik heb dan weer veel minder met honden. Ze stinken en je moet ermee naar buiten, zo vaak mogelijk het liefst. En ja je kunt ze wassen, maar toch stinken ze nog :D

Maar ik zou voor beiden niet terug komen van vakantie zoals eerder gezegd.

---------- Post toegevoegd 8 August 2013 om 15:44 ----------



Fijne dokter! :eek:

Weet meteen waar de term hardlopers zijn doodlopers vandaan komt :o

:roflol:

die vent is zon debiel, als je daar met een gebroken arm aankomt waar et bot van uitsteekt durft tie nog gerust te vragen: "wat denk je dat je zelf hebt"

gelukkig krijgen we twee nieuwe dokters
 
:roflol:

die vent is zon debiel, als je daar met een gebroken arm aankomt waar et bot van uitsteekt durft tie nog gerust te vragen: "wat denk je dat je zelf hebt"

gelukkig krijgen we twee nieuwe dokters

Die krijg je cadeau? Die nieuwe dokters?
Srsly als ik een knurft van een dokter heb, ga ik zelf wel een nieuwe zoeken.. Je betaald je het ongans in dit land voor medische zorg.. Het gaat er bij mij dan echt niet in dat mijn dokter niet snugger genoeg is of niet naar mij wil luisteren.
 
Dem powers.

Oh dus gewoon die shit implementeren. Is er niets gezegd over die marker/mask? Dus dat je bepaalde afbeelding met gebruiken om te testen of zo?
Nope, ik mocht zelf wat verzinnen. Heb nu alles herschreven en de globals etc. de deur uitgeflikkerd zodat m'n docent blij is. Echter blijf ik met hetzelfde probleem zitten nu ik gewoon met pointers ed. werk (heb een mask en marker met dezelfde dimensies gehanteerd, zoals m'n docent 'verwachtte').

Ik roep seq_reconstruct aan die alle magie uitoefent, dit gaat allemaal goed, maar direct de eerst volgende statement die ik uitvoer die iets zinnigs doet ('n printf werkt nog wel, maar 'n imread, of iets anders niet), resulteert in:
Code:
./seq_constr
Marker and image set
Sequential reconstruction initiated.
Sequential reconstruction completed.
seq_constr: malloc.c:2451: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Writing reconstruction to file initiated.Aborted (core dumped)

Dit is mijn code:
Code:
#define CV_NO_BACKWARD_COMPATIBILITY

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <fstream>

using namespace cv;

int get_min(int a, int b) {
    return (1/2) * abs(a + b) - (1/2) * abs(a - b);
}

/*
 * Returns true when stability is reached, i.e. when the two Mats are equal.
 */
bool stability_reached(Mat* prev, Mat* marker) {
    Mat diff = *prev != *marker;
    
    return countNonZero(diff) == 0;
}

/*
 * Iterates over the neighbourhood of a point p, retrieving the local max. 
 * When bool neighbourhood is true, it iterates over all neighbours of p which are reached
 * before p during a raster scanning of the image and when set to false, iterates over 
 * all neighbours of p which are reached after p. 
 * (Ng+(p) and Ng-(p) respectively, as described by L. Vincent [1993]).
 */
int get_local_max(Point p, bool neighbourhood, Mat* marker, Size* se_size) {
    int max    = (*marker).at<uchar>(p),
        offset = -1;
    if(neighbourhood) { // Ng+(p)
        for(int i = p.y; i >= p.y - (((*se_size).height - 1) / 2); i--, offset++) {
            for(int j = p.x + offset; j >= p.x - (((*se_size).width - 1) / 2); j--) {
                if((*marker).at<uchar>(j, i) > max)
                    max = (*marker).at<uchar>(j, i);
            }
        }
    }
    else { // Ng-(p)
        for(int i = p.y; i <= p.y + (((*se_size).height - 1) / 2); i++, offset++) {
            for(int j = p.x - offset; j <= p.x + (((*se_size).width - 1) / 2); j++) {
                if((*marker).at<uchar>(j, i) > max)
                    max = (*marker).at<uchar>(j, i);
            }
        }
    }
    
    return max;
}

/*
 * Performs a sequential scan in either raster or anti-raster order.
 * Retrieves the local max(p) of the marker, and then determines the minimum of 
 * both max(p) and mask(p).
 */
void seq_scan(Mat* mask, Mat* marker, Size* se_size, bool raster) {
    if(raster) {
        for(int y = 1; y < (*mask).rows; y++) {
            for(int x = 0; x < (*mask).cols; x++) {
                int max = get_local_max(Point(x, y), true, marker, se_size);
                (*marker).at<uchar>(x, y) = get_min(max, (*mask).at<uchar>(x, y));
            }
        }
    }
    else {
        for(int y = (*mask).rows - 1; y > 0; y--) {
            for(int x = (*mask).cols - 1; x >= 0 ; x--) {
                int max = get_local_max(Point(x, y), false, marker, se_size);
                (*marker).at<uchar>(x, y) = get_min(max, (*mask).at<uchar>(x, y));
            }
        }
    }
}

/*
 * Performs morphological reconstruction applying sequential algorithm as proposed by L. Vincent (2003)
 */ 
void seq_reconstruct(Mat* mask, Mat* marker, Size* se_size, bool raster) {
    Mat prev;

    printf("Sequential reconstruction initiated.\r\n");
    do {
        prev = *marker;
        seq_scan(mask, marker, se_size, raster);
        seq_scan(mask, marker, se_size, !raster);
    } while(!stability_reached(&prev, marker));
    printf("Sequential reconstruction completed.\r\n");
}

int main(int argc, char** argv) {
    Mat mask, marker;
    Size se_size(3, 3); // Structuring element; should be of size (n*2 + 1, n*2 + 1), with n >= 1.
    bool raster = true; // True = raster order, false = anti-raster order.

    // Read mask and marker
    if((mask = imread("mask.jpg", 0)).data == 0 || (marker = imread("marker.jpg", 0)).data == 0)
        return -1;
    printf("Marker and image set\r\n");

    // Perform sequential reconstruction.
    seq_reconstruct(&mask, &marker, &se_size, raster);
    printf("Writing reconstruction to file initiated.");
    imwrite("reconstructed.jpg", marker);
    printf("Writing reconstruction to file completed.");

    return 0;
}
 
Laatst bewerkt:
Die krijg je cadeau? Die nieuwe dokters?
Srsly als ik een knurft van een dokter heb, ga ik zelf wel een nieuwe zoeken.. Je betaald je het ongans in dit land voor medische zorg.. Het gaat er bij mij dan echt niet in dat mijn dokter niet snugger genoeg is of niet naar mij wil luisteren.

die mong**l helpt je uiteindelijk dan toch wel. maar ik kom er hoogstens 1x per jaar.
 
Nope, ik mocht zelf wat verzinnen. Heb nu alles herschreven en de globals etc. de deur uitgeflikkerd zodat m'n docent blij is. Echter blijf ik met hetzelfde probleem zitten nu ik gewoon met pointers ed. werk (heb een mask en marker met dezelfde dimensies gehanteerd, zoals m'n docent 'verwachtte').

Ik roep seq_reconstruct aan die alle magie uitoefent, dit gaat allemaal goed, maar direct de eerst volgende statement die ik uitvoer die iets zinnigs doet ('n printf werkt nog wel, maar 'n imread, of iets anders niet), resulteert in:
Code:
./seq_constr
Marker and image set
Sequential reconstruction initiated.
Sequential reconstruction completed.
seq_constr: malloc.c:2451: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Writing reconstruction to file initiated.Aborted (core dumped)
Dit is mijn code:
Code:
#define CV_NO_BACKWARD_COMPATIBILITY

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <fstream>

using namespace cv;

int get_min(int a, int b) {
    return (1/2) * abs(a + b) - (1/2) * abs(a - b);
}

/*
 * Returns true when stability is reached, i.e. when the two Mats are equal.
 */
bool stability_reached(Mat* prev, Mat* marker) {
    Mat diff = *prev != *marker;
    
    return countNonZero(diff) == 0;
}

/*
 * Iterates over the neighbourhood of a point p, retrieving the local max. 
 * When bool neighbourhood is true, it iterates over all neighbours of p which are reached
 * before p during a raster scanning of the image and when set to false, iterates over 
 * all neighbours of p which are reached after p. 
 * (Ng+(p) and Ng-(p) respectively, as described by L. Vincent [1993]).
 */
int get_local_max(Point p, bool neighbourhood, Mat* marker, Size* se_size) {
    int max    = (*marker).at<uchar>(p),
        offset = -1;
    if(neighbourhood) { // Ng+(p)
        for(int i = p.y; i >= p.y - (((*se_size).height - 1) / 2); i--, offset++) {
            for(int j = p.x + offset; j >= p.x - (((*se_size).width - 1) / 2); j--) {
                if((*marker).at<uchar>(j, i) > max)
                    max = (*marker).at<uchar>(j, i);
            }
        }
    }
    else { // Ng-(p)
        for(int i = p.y; i <= p.y + (((*se_size).height - 1) / 2); i++, offset++) {
            for(int j = p.x - offset; j <= p.x + (((*se_size).width - 1) / 2); j++) {
                if((*marker).at<uchar>(j, i) > max)
                    max = (*marker).at<uchar>(j, i);
            }
        }
    }
    
    return max;
}

/*
 * Performs a sequential scan in either raster or anti-raster order.
 * Retrieves the local max(p) of the marker, and then determines the minimum of 
 * both max(p) and mask(p).
 */
void seq_scan(Mat* mask, Mat* marker, Size* se_size, bool raster) {
    if(raster) {
        for(int y = 1; y < (*mask).rows; y++) {
            for(int x = 0; x < (*mask).cols; x++) {
                int max = get_local_max(Point(x, y), true, marker, se_size);
                (*marker).at<uchar>(x, y) = get_min(max, (*mask).at<uchar>(x, y));
            }
        }
    }
    else {
        for(int y = (*mask).rows - 1; y > 0; y--) {
            for(int x = (*mask).cols - 1; x >= 0 ; x--) {
                int max = get_local_max(Point(x, y), false, marker, se_size);
                (*marker).at<uchar>(x, y) = get_min(max, (*mask).at<uchar>(x, y));
            }
        }
    }
}

/*
 * Performs morphological reconstruction applying sequential algorithm as proposed by L. Vincent (2003)
 */ 
void seq_reconstruct(Mat* mask, Mat* marker, Size* se_size, bool raster) {
    Mat prev;

    printf("Sequential reconstruction initiated.\r\n");
    do {
        prev = *marker;
        seq_scan(mask, marker, se_size, raster);
        seq_scan(mask, marker, se_size, !raster);
    } while(!stability_reached(&prev, marker));
    printf("Sequential reconstruction completed.\r\n");
}

int main(int argc, char** argv) {
    Mat mask, marker;
    Size se_size(3, 3); // Structuring element; should be of size (n*2 + 1, n*2 + 1), with n >= 1.
    bool raster = true; // True = raster order, false = anti-raster order.

    // Read mask and marker
    if((mask = imread("mask.jpg", 0)).data == 0 || (marker = imread("marker.jpg", 0)).data == 0)
        return -1;
    printf("Marker and image set\r\n");

    // Perform sequential reconstruction.
    seq_reconstruct(&mask, &marker, &se_size, raster);
    printf("Writing reconstruction to file initiated.");
    imwrite("reconstructed.jpg", marker);
    printf("Writing reconstruction to file completed.");

    return 0;
}

Hoewel dit niet het probleem is: je skipt bij seq_scan rij 0 (pas je local_max daar aan aan, daarom zette ik dat expliciet als comment bij die code die ik gaf).
 
Hoewel dit niet het probleem is: je skipt bij seq_scan rij 0 (pas je local_max daar aan aan, daarom zette ik dat expliciet als comment bij die code die ik gaf).
Ah zie dat die er weer terug in was geslopen, had hem tijdelijk zo gezet inderdaad. Goed gespot. Krijg namelijk deze error als ik bij rij 0 begin:
Code:
./seq_constr
Marker and image set
Sequential reconstruction initiated.
*** glibc detected *** ./seq_constr: double free or corruption (out): 0x00000000007d4b70 ***
======= Backtrace: =========
die bespaar ik je
:o

Zal wel iets met de borders te maken hebben, echter weet ik van eerder dat ik gewoon negatieve coordinaten van punten kon lezen (en dan las ie die alszijnde 255; wit).

Eeuwige karma overigens, heb meer aan jou dan aan m'n docent :roflol:

Edit: ragt in raster order gewoon lekker door t/m het einde (heb 'n afbeelding van 164x100, dus 163x99 is de grens beginnend vanaf 0):
Code:
(...)
x: 154, y: 99
x: 155, y: 99
x: 156, y: 99
x: 157, y: 99
x: 158, y: 99
x: 159, y: 99
x: 160, y: 99
x: 161, y: 99
x: 162, y: 99
x: 163, y: 99
*** glibc detected *** ./seq_constr: double free or corruption (out): 0x0000000001f95b70 ***
 
Laatst bewerkt:
Ah zie dat die er weer terug in was geslopen, had hem tijdelijk zo gezet inderdaad. Goed gespot. Krijg namelijk deze error als ik bij rij 0 begin:
Code:
./seq_constr
Marker and image set
Sequential reconstruction initiated.
*** glibc detected *** ./seq_constr: double free or corruption (out): 0x00000000007d4b70 ***
======= Backtrace: =========
die bespaar ik je
:o

Zal wel iets met de borders te maken hebben, echter weet ik van eerder dat ik gewoon negatieve coordinaten van punten kon lezen (en dan las ie die alszijnde 255; wit).

Eeuwige karma overigens, heb meer aan jou dan aan m'n docent :roflol:

Edit: ragt in raster order gewoon lekker door t/m het einde (heb 'n afbeelding van 164x100, dus 163x99 is de grens beginnend vanaf 0):
Code:
(...)
x: 154, y: 99
x: 155, y: 99
x: 156, y: 99
x: 157, y: 99
x: 158, y: 99
x: 159, y: 99
x: 160, y: 99
x: 161, y: 99
x: 162, y: 99
x: 163, y: 99
*** glibc detected *** ./seq_constr: double free or corruption (out): 0x0000000001f95b70 ***

Wat een vage en totaal nietszeggende foutmeldingen man, C#/VS heeft altijd goede nuttige errors. Oja, Dreamspark ligt eruit dus kon VS niet downloaden (gelijk ontopic), heb even via kickass geplukt. Kijk wel of ik dit ook ff kan maken:D
 
Wat een vage en totaal nietszeggende foutmeldingen man, C#/VS heeft altijd goede nuttige errors. Oja, Dreamspark ligt eruit dus kon VS niet downloaden (gelijk ontopic), heb even via kickass geplukt. Kijk wel of ik dit ook ff kan maken:D
Idem voor overige progtalen, maar C++ is natuurlijk het stereotype vervelende nerdtaal, waarbij dit soort abstracte foutmeldingen natuurlijk niet mochten ontbreken. Ik haat het.
 
Terug
Naar boven