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: Eric de La Rochette <rblists at edlr dot fr>
Date: Wed, 23 Apr 2008 10:51:57 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <E27BDBF2-86B3-4639-92D6-5F741320AD28 at mac dot com> <83668E5B-B993-43A9-B7CB-FAE740AA180D at cretaux dot fr> <426BAB83-71D2-47C1-A348-2329BCF459F4 at gmail dot com>

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>