Bonjour à tous et merci Je suis étudiante et j'écris un code C++ pour mon projet final. Mon problème de code est avec Edge Detection algorithme (traitement d'images), alors que je suis en cours d'exécution Edge Detection algorithme dans MATLAB I obtient une bonne détection de bord, mais si je courais le code de l'algorithme écrit en C++, l'image créée est avec une mauvaise détection.Détection de contours - mauvaise détection
J'ai essayé de détecter le bord avec Matlb en utilisant un seuil de 0,03 et la détection était super (les changements dans mon projet est très faible (peu de changements sur la surface blanche).
Merci beaucoup Idan.
peut-être quelqu'un peut me aider, voici mon code:.
void ApplySobelFilter(unsigned char src[][NUMBER_OF_COLUMNS], float Threshold)
{
unsigned char dst[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];
unsigned char * ptrToImage;
ptrToImage = dst[0];
// Kernels for sobel operator
int Kernel_X[3][3] = { { -1, 0, 1 },{ -2, 0, 2 },{ -1, 0, 1 } };
int Kernel_Y[3][3] = { { 1, 2, 1 },{ 0, 0, 0 },{ -1, -2, -1 } };
// clears destination image
for (int pixel = 0; pixel < NUMBER_OF_ROWS*NUMBER_OF_COLUMNS; pixel++)
*ptrToImage++ = 0;
for (int row = 1; row < NUMBER_OF_ROWS - 1; row++)
for (int column = 1; column < NUMBER_OF_COLUMNS - 1; column++)
{
double Gtot = 0;
int Gx = 0;
int Gy = 0;
for (int x = -1; x <= 1; x++)
for (int y = -1; y <= 1; y++)
{
Gx += src[row + y][column + x] * Kernel_X[y + 1][x + 1];
Gy += src[row + y][column + x] * Kernel_Y[y + 1][x + 1];
}
Gtot = sqrt(double(Gx^2 + Gy^2));
if (Gtot >= Threshold)
dst[row][column] = 255;
else
dst[row][column] = 0;
}
for (int row = 0; row < NUMBER_OF_ROWS; row++)
{
for (int col = 0; col < NUMBER_OF_COLUMNS; col++)
{
src[row][col] = dst[row][col];
}
}
}
salut Idan, bienvenue à débordement bloqué! Connaissez-vous la bibliothèque OpenCV? c'est une bibliothèque C++ avec des capacités de traitement d'image. Il contient également la fonction Sobel. Pour plus d'informations: http://opencv.org/ – drorco
Pouvez-vous poster des images (attendues et résultats)? Ou, au moins des liens vers eux? –
Une autre chose, votre image est une image grise? –