Note di implementazione per i filtri di segmentazione
È importante notare le proprietà che il filtro di segmentazione imposta in ogni elemento figlio creato. Queste proprietà sono: WIA_IPS_XPOS, WIA_IPS_YPOS, WIA_IPS_XEXTENT, WIA_IPS_YEXTENT ed eventualmente WIA_IPS_DESKEW_X e WIA_IPS_DESKEW_Y. Questi valori di proprietà corrispondono alla posizione dell'elemento sul piano, non nell'immagine passata nel parametro pInputStream .
Pertanto, è importante che il filtro di segmentazione pressi attenzione al WIA_IPS_XPOS, WIA_IPS_YPOS e WIA_IPS_ROTATION proprietà dell'immagine passata.
Si supponga ad esempio che un'applicazione esempli un'analisi di anteprima in cui imposta WIA_IPS_XPOS = WIA_IPS_YPOS = 200 nell'elemento (padre) prima di acquisire l'immagine di anteprima. Chiama quindi nel filtro di segmentazione per rilevare le possibili sottoregioni. Tuttavia, l'algoritmo effettivo usato nel filtro di segmentazione agisce sull'immagine passata. Se questo algoritmo rileva un angolo inferiore di 150 pixel a destra del bordo sinistro dell'immagine e 200 pixel verso il basso dalla parte superiore dell'immagine, corrisponde effettivamente a un punto che si trova in corrispondenza (350, 400) nello scanner.
Nella figura seguente, l'area esterna rappresenta lo scanner flat. Anche se l'algoritmo troverà le coordinate dell'angolo superiore sinistro dell'area (150, 200), i valori che il filtro di segmentazione deve impostare nell'elemento figlio per WIA_IPS_XPOS e WIA_IPS_YPOS sono 350 e 400.
Se, ad esempio, un'applicazione visualizzerà visivamente le aree rilevate dal filtro di segmentazione, è necessario tenere presente che il filtro di segmentazione imposta le coordinate corrispondenti alla relativa posizione nel piano. Ciò significa che l'applicazione deve eseguire il mapping delle coordinate flat alle coordinate dell'immagine di anteprima. Nella maggior parte dei casi, tuttavia, un'applicazione eseguirà un'analisi di anteprima con WIA_IPS_XPOS = WIA_IPS_YPOS = 0 e nessuna rotazione (WIA_IPS_ROTATION = PORTRAIT). In questo caso, esiste un mapping diretto tra le coordinate sul piano e quelle nell'immagine di anteprima.
Un'altra proprietà che il filtro di segmentazione deve prestare attenzione è la proprietà di rotazione, WIA_IPS_ROTATION, fornendo al driver di implementare questa proprietà. Si supponga, ad esempio, che quando si acquisisce l'immagine di anteprima, l'applicazione imposta WIA_IPS_ROTATION su ROT180. In questo caso l'angolo superiore sinistro dell'immagine passato nel filtro di segmentazione corrisponde effettivamente all'angolo inferiore destro sul piano piano. Pertanto, il filtro di segmentazione deve eseguire il mapping delle coordinate di ogni sottorezione rilevata nell'immagine ruotata in base alle coordinate sul piano. Dopo aver eseguito questo mapping, il filtro di segmentazione può impostare WIA_IPS_XPOS, WIA_IPS_YPOS e altri valori di proprietà nell'elemento figlio corrispondente all'immagine secondaria.
Si noti che, nella maggior parte dei casi, WIA_IPS_XPOS e WIA_IPS_YPOS verranno impostati su zero e WIA_IPS_ROTATION verrà impostato su PORTRAIT. Tuttavia, la segmentazione deve essere in grado di gestire un caso in cui non sono impostati su questi valori.
Si noti anche che mentre un'applicazione può passare un'immagine al filtro di segmentazione ruotato dal driver, non deve passare un'immagine su cui è già stata eseguita la scrivania.