Newsgroup: it.comp.lang.delphi
Titolo: SOLUZIONE di come misurare in millimetri o pixel un segmento

Innanzitutto ti dico la mia idea per tracciare le linee.
Dovresti mettere una immagine trasparente sulla tua.
Esempio:
- Traccio linea rossa sull'immagine trasparente, memorizzo (X1,Y1,X2,Y2)
- Se punto col mouse sulla retta tracciata faccio:
  Mouse Down : Se GETCOLOR=Rosso then SpostaRetta:=true;
  Mouse Up   : Se sposta retta=true then begin SPOSTALA; 
               SpostaRetta:=False" end;
Se hai una sola retta potresti tracciarla direttamente sulla tua 
immagine e ad ogni cambio della posizione della retta fai un REFRESH 
dell'immagine che viene ricaricata.
Spero di esserti stato utile.
Ciao
RIPORTO INFINE I PUNTI CORRETTI DEL POST:
Simone P. ha scritto:
"ciao a tutti... dovendo sviluppare un software in cui ho 2 immagini 
affiancate (jpeg) acquisite sempre alla stessa risoluzione, dimensione, 
zoom 
(tramite una webcam ed un dermatoscopio collegato) avrei la necessità di 
tracciare una linea con il mouse e misurare la retta, secondo voi come 
posso 
trasformare la lunghezza della retta da pixel a millimetri??? come posso 
calcolare una cosa del genere?
Simone "
______________________________________________________________________
Andrea Laforgia risponde:
"Dipende da quanto accurata è l'informazione che devi tirare fuori.
Il fatto è che la grandezza dei pixel e il "dot pitch", ovvero la 
distanza
tra pixel dipende strettamente dalla tecnologia utilizzata. Su molti
monitor, il dot pitch è di 0.28 millimetri..."
______________________________________________________________________
Matteo Sella risponde:
"Il dot pitch non c'entra un fico secco, in quanto è una misura della 
grandezza della terna di punti di colore che compone un pixel, più 
l'eventuale distanza tra terne adiacenti.
Questa misura non intacca minimamente il numero di pixel presenti sullo 
schermo che dipendono dalla modalità Es. 1024x768
Delphi rileva i pixel e non il Dot pitch ! 
Quando viene campionata o fotografata una immagine, il numero di pixel 
che la compongono non varia, ma viene pittosto scritta in una qualsiasi 
memoria per essere utilizzata al momento giusto.
Ecco perchè non serve nemmeno indicare il tipo di risoluzione, infatti 
se sono in 1024x768 oppure in 800x600 le cose non cambiano perchè i 
pixel che compongono l'immagine sono comunque e sempre quelli"
______________________________________________________________________
Alberto Rubinelli risponde:
"Io per un'applicazione simile alla tua (valutare delle lesioni di 
tessuti al microscopio) sono andato per via sperimentale, cioe' 
misuravo, calcolavo e riprovavo, alla fine ho ottenuto un fattore che ho 
inserito , programmabile.
In pratica, faccio una taratura, non so se riesco a spiegarmi. Metto 
sotto un oggetto dalla dimensione certa (in questo caso si parla di 
micron) lo visualizzo , poi dico all'operatore centrami con i cursori 
inizio e fine e poi dico : bene, questo tratto e' largo 70 micron e 
cosi' taro il sistema.
Ciao.Alberto."
______________________________________________________________________
Matteo Sella Risponde:
"Basta contare quanti pixel ci sono tra un punto e l'altro (usa le 
coordinate X e Y di Delphi) e applicare la giusta formula di conversione.
Punto un pixel e trovo        X1,Y1
Punto un altro pixel e trovo  X2,Y2
Procedo in verticale (Y1-->Y2) e conto quanti pixel ci sono
Procedo in orizzontale (X1--X2) e conto quanti pixel ci sono
Calcolo i due cateti 
Cateto1 in mm =K*[Numero di pixel 1]
Cateto2 in mm =K*[Numero di pixel 2]
Applico PITAGORA ! K che dipende solo dal sistema di SCANSIONE lo trovi 
con il metodo di Alberto una sola volta e vale per tutte le risoluzioni, 
- Aggiungo io - a patto di non fare un resize dell'immagine che deve 
essere caricata così come è, se fai dei resize avrai ovviamente bisogno 
di più K, K1,K2,K3... che sono comunque una funzione di K calcolato 
all'inizio".
______________________________________________________________________
Marco Breveglieri ha scritto:
"Ho incontrato anche io questa tipologia di problema, cioè di dover 
rappresentare elementi a video (sempre con la libreria che cito in 
continuazione, la famosa *Graphics32*) che rappresentano oggetti 
esistenti nella realtà, ed ho agito esattamente come hai indicato.
La scelta che ho fatto è stata quella di stabilire una costante che 
rappresenti un rapporto di conversione pixel/mm"
Il cui concetto corrisponde esattamente a quello di utilizzare una 
costante K.
--- posted by geoForum on 
http://www.delphiedintorni.it

 dell'immagine che viene ricaricata.
pero' cosi' si appesantisce ... pensiamo a immagini anche pesanti
Ciao.Alberto.
-- 
===============================================================
Alberto Rubinelli - A2 SISTEMI 
news.bbip.it
 ThunderBird 1.5.0.9
Via Costantino Perazzi 22 - 28100 NOVARA - ITALY
Tel 0321 640149   Fax 0321 391769   BBS 0321 392320
Mail: 
alb...@oldcomputers.de
skype: albertorubinelli  ICQ : 49872318
Visita il mio museo di computers: 
http://www.oldcomputers.it
===============================================================

siete grandi... mi avete dato un sacco di soluzioni... ora mi metto 
all'opera
Simo 

 ha scritto nel messaggio 
news:58gt6eF...@mid.individual.net...


ho provato a disegnare su un jpeg però il canvas è readonly... ho 
trasformato il jpeg in bmp però se uso:
    image1.canvas.pen.color:=clblue;
    image1.canvas.pen.Mode:=pmCopy;
    image1.canvas.pen.style:=psdot;
    Image1.Canvas.MoveTo(nX,nY);
    Image1.Canvas.LineTo(X,Y);
non succede nulla a video
Simo 

sono un caz.... io perchč avevo sbagliato X e y
Simo 

L'idea di usare la LABEL di Alberto perň non č male !
Puoi usarne una per ogni riga che fai eventualmente, cosě per cancellare 
le righe fai veloce.
Ciao
