realbasic-nug.fr
[Top] [All Lists]

Re: Egalité d'images

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: Egalité d'images
From: roland poulard <roland at sucellus dot net>
Date: Thu, 24 Apr 2008 20:56:57 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
S' il est necessaire de comparer les images bit a bit, une solution plus rapide serait
d'utiliser la function StrComp en mode binaire
apres avoir "transfere" ( ou convertit ) les images vers des memoryBlock

Bon courage

Le mercredi, 23 avr 2008, à 10:51 Europe/Paris, Eric de La Rochette a écrit :


Le 23-avr.-08 à 07:45, Eric Ferrer a écrit :
(...)
Ensuite, la seule solution que je vois est une comparaison pixel à pixel...
Certainement pas très rapide, mais bon :

for y = 0 to image1.height-1
        for x = 0 to image1.width-1
if image1.RGBSurface.Pixel(x, y) <> image2.RGBSurface.Pixel(x, y) then
                        return false
                end if
        next
next
return true


Selon la taille des images, cette fonction sera certainement très très lente.

D'un autre coté, si les images sont différentes, il y a de fortes chances qu'elle retourne False assez rapidement. Juste une chose, par habitude, j'aurai tendance à penser qu'il vaut mieux les comparer de façon verticale c'est à dire en inversant les deux boucles. D'abord X, et ensuite Y. En effet, pour ce qui concerne mon expérience personnelle, j'ai plus souvent des images avec des bandes noires horizontale en haut et en bas. Du coup, la boucle risquerait de mettre plus de temps avant de rencontrer une différence. D'ailleurs, l'algorithme le plus évolué et efficace à mon sens, serait celui qui compare à partir du centre de l'image... Pas forcément beaucoup plus compliqué à écrire.

Mais peut-être n'est-il pas nécessaire de comparer chaque pixel un à un.
Peut-être 1 pixel sur 10 suffirait ?

J'aime bien cette approche....

Bon courage
Pareil

Eric
Pareil aussi !!!! ;-)




<Prev in Thread] Current Thread [Next in Thread>