Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Jak porównać dwa pliki graficzne?

dzajdol 12 Nov 2004 00:36 3351 10
  • #1
    dzajdol
    Level 11  
    Jako dane wejściowe mamy oryginalna bitmape oraz dwie drukowane na 2 drukarkach w technologii photoret I i pohotoret IV obie wydrukowane bitmapy są skanowane w tej samej rozdzielczości. Pliki skanowane będą stanowić porównanie do najlepiej oryginalnej bitmapy. W razie gdyby to dwa wykonane wydruki ze soba.

    Jest mały problem z porównaniem bitmap nie wiem jak pobrać wydrukowane bitmapy spowrotem do plikow. Tak aby porównywać te same piksele, aby nie było przekłamań spowodowanych przesunięciami w obrazie.

    Jezyk c, c++, pascal, delphi, albo cociaz sam opis metody jak to zrobic

    Zamykam. - arnoldziq
  • #2
    one_eddie
    Level 25  
    kup pluginy fine readera :P

    A tak powaznie to sprubuj drukowac to z jakas ramka potem na skaner i jak juz zeskanujesz to skaluj, obracaj obraz tak aby ramka pasowala do jakiegos tam wzoru, ogolnie temat dosc trudny.

    Choc poczatkowo wydaje sie latwy :)
  • #3
    Filip
    Level 23  
    aby zrobić to porządnie potrzeba:
    1. rozdzielczość skanera (nie interpolowana!) musi byc co najmniej 2xlepsza niz wydruków.
    2. w testowanych obrazkach muszą być dodatkowe znaczniki dla określenia i ew korekcji nieliniowości ułożenia obrazu (po ludzku: 'skew')
    3. DUZO cierpliwości w układaniu testowych obrazków na skanerze (dokładność rzędu poniżej stponia)
    powodzenia
  • #4
    dzajdol
    Level 11  
    Filip wrote:
    aby zrobić to porządnie potrzeba:
    1. rozdzielczość skanera (nie interpolowana!) musi byc co najmniej 2xlepsza niz wydruków.
    2. w testowanych obrazkach muszą być dodatkowe znaczniki dla określenia i ew korekcji nieliniowości ułożenia obrazu (po ludzku: 'skew')
    3. DUZO cierpliwości w układaniu testowych obrazków na skanerze (dokładność rzędu poniżej stponia)
    powodzenia


    MOŻECIE MI ROZWINĄĆ to skew co to jest i jak to nanieść, zaznaczyć??
  • #5
    h-doc
    Level 27  
    pytnie tylko, jakie kryteria będą stanowiły o podobieństwie bitmap? Korelacja wzajemna? Błąd średniokwadratowy? A może maksymalna odchyłka? Nad tym też warto by się zastanowić. Poza tym nawet stosując te same kryteria, inne wyniki dostaniesz stosując RGB a inne jeśli zastosujesz HSI.
  • #6
    dzajdol
    Level 11  
    h-doc wrote:
    pytnie tylko, jakie kryteria będą stanowiły o podobieństwie bitmap? Korelacja wzajemna? Błąd średniokwadratowy? A może maksymalna odchyłka? Nad tym też warto by się zastanowić. Poza tym nawet stosując te same kryteria, inne wyniki dostaniesz stosując RGB a inne jeśli zastosujesz HSI.


    Bede korzystal z RGB i od orgynialu bede odejmowal kopie pixel po pixelku
    i bedzie z tego srednia, tylko chodzi zeby obrazek byl w postaci RGB i nie bylo zadnych przeklaman przez skanowanie.
  • #7
    h-doc
    Level 27  
    no właśnie - i tutaj widzę błędne założenie. Załóżmy bowiem, że co drugi piksel będzie jaśniejszy o jakąś warotść, a co drugi ciemniejszy o tę samą wartość. No i wedłu Twojego kryterium oceny jakości będzie to kopia idealna (ponieważ średnia różnic pikseli będzie zerowa) a tak naprawdę będzie do d.... Pomyśl zatem o jakiejś innej metodzie oceny jakości kopii (weź również pod uwagę modele percepcyjne)
  • #8
    dzajdol
    Level 11  
    h-doc wrote:
    no właśnie - i tutaj widzę błędne założenie. Załóżmy bowiem, że co drugi piksel będzie jaśniejszy o jakąś warotść, a co drugi ciemniejszy o tę samą wartość. No i wedłu Twojego kryterium oceny jakości będzie to kopia idealna (ponieważ średnia różnic pikseli będzie zerowa) a tak naprawdę będzie do d.... Pomyśl zatem o jakiejś innej metodzie oceny jakości kopii (weź również pod uwagę modele percepcyjne)


    To jest mniejszy problem, tylko jak je zeskanowac aby nie było żadnych przesunięć w zeskanowanym obrazku?? Aby można było je dobrze porównać, bo jak je włoże do skanera troszke obok to jakiśpasek on zeskanuje biały i będzie to duży problem. Czy da się zeskanować tak aby był idealnie zeskanowany??
  • #9
    h-doc
    Level 27  
    Dobra, ja bym na początek spróbował tak:
    w narożnikach umieścić charakterystyczne i dobrze kontrastujące symbole graficzne (np. krzyż albo coś takiego). Po zeskanowaniu program musi rozpoznać te obiekty (znaleźć je na bitmapie) i określić ich pozycję. Znamy oczywiście pozycję obiektów na oryginalnej bitmapie. Teraz przesuwamy cały zeskanowany obraz tak, żeby pozycja górnego lewego obiektu była zgodna z oryginałem. W ten sposób mamy załatwione przesunięcie bitmapy. Teraz rotacja. Wyznaczasz kąt pomiędzy linią poziomą a linią utworzoną poprzez połączenie górnego lewego obiektu z górnym prawym lub dolnym lewym. Po wyznaczeniu tego kąta obracasz całą bitmapę o ten kąt. No i ostatecznie rozciągnięcie. Określasz procentową różnicę pomiędzy pozycją górnego prawego obiektu w bitmapie oryginalnej i zeskanowej (odniesioną do długosci całego boku). I o ten procent rozciągasz całą bitmapę w poziomie. To samo robisz dla pionu.
    Zakładając, że jedyne zniekształcenia to przesunięcie, rozciągnięcie i rotacja, po tych zabiegach powinieneś uzyskać odpowiednią bitmapę.
    Pamiętaj o uwzględnieniu takich rzeczy jak:
    1. profil koloru drukarki i skanera
    2. jakość papieru
    3. sterownik skanera (twain potrafi czasami różne dziwne rzeczy zrobić z obrazem)

    Pomyśl również, czy nie byłoby sensowne wykonanie ślepej próby, czyli wstępne zeskanowanie karty, na której będziesz drukować. W ten sposób w Twoich pomiarach uwzględnisz niedoskonałość papieru, transmitancję optyki skanera, światło etc.
  • #10
    dzajdol
    Level 11  
    h-doc wrote:
    Dobra, ja bym na początek spróbował tak:
    w narożnikach umieścić charakterystyczne i dobrze kontrastujące symbole graficzne (np. krzyż albo coś takiego). Po zeskanowaniu program musi rozpoznać te obiekty (znaleźć je na bitmapie) i określić ich pozycję. Znamy oczywiście pozycję obiektów na oryginalnej bitmapie. Teraz przesuwamy cały zeskanowany obraz tak, żeby pozycja górnego lewego obiektu była zgodna z oryginałem. W ten sposób mamy załatwione przesunięcie bitmapy. Teraz rotacja. Wyznaczasz kąt pomiędzy linią poziomą a linią utworzoną poprzez połączenie górnego lewego obiektu z górnym prawym lub dolnym lewym. Po wyznaczeniu tego kąta obracasz całą bitmapę o ten kąt. No i ostatecznie rozciągnięcie. Określasz procentową różnicę pomiędzy pozycją górnego prawego obiektu w bitmapie oryginalnej i zeskanowej (odniesioną do długosci całego boku). I o ten procent rozciągasz całą bitmapę w poziomie. To samo robisz dla pionu.

    Dzieki bardzo wlasnie o cos takiego mi chodzilo. Pomogles mi bardzo. Jeszcze raz Thx
    Zakładając, że jedyne zniekształcenia to przesunięcie, rozciągnięcie i rotacja, po tych zabiegach powinieneś uzyskać odpowiednią bitmapę.
    Pamiętaj o uwzględnieniu takich rzeczy jak:
    1. profil koloru drukarki i skanera
    2. jakość papieru
    3. sterownik skanera (twain potrafi czasami różne dziwne rzeczy zrobić z obrazem)

    Pomyśl również, czy nie byłoby sensowne wykonanie ślepej próby, czyli wstępne zeskanowanie karty, na której będziesz drukować. W ten sposób w Twoich pomiarach uwzględnisz niedoskonałość papieru, transmitancję optyki skanera, światło etc.
  • #11
    h-doc
    Level 27  
    dzajdol - mógłbyś to sprecyzować? ;-)