Notas de implementación para filtros de segmentación
Es importante tener en cuenta las propiedades que establece el filtro de segmentación en cada elemento secundario que crea. Estas propiedades son: WIA_IPS_XPOS, WIA_IPS_YPOS, WIA_IPS_XEXTENT, WIA_IPS_YEXTENT y, posiblemente, WIA_IPS_DESKEW_X y WIA_IPS_DESKEW_Y. Estos valores de propiedad corresponden a la posición del elemento en el plano, no en la imagen pasada al parámetro pInputStream .
Por lo tanto, es importante que el filtro de segmentación preste mucha atención a las propiedades WIA_IPS_XPOS, WIA_IPS_YPOS y WIA_IPS_ROTATION de la imagen pasada.
Por ejemplo, supongamos que una aplicación realiza un examen de vista previa en el que establece WIA_IPS_XPOS = WIA_IPS_YPOS = 200 en el elemento (primario) antes de adquirir la imagen de vista previa. A continuación, llama al filtro de segmentación para detectar posibles subdivisiones. Sin embargo, el algoritmo real usado en el filtro de segmentación actúa en la imagen que se pasa a ella. Si este algoritmo detecta una esquina de subregión de 150 píxeles a la derecha del borde izquierdo de la imagen y 200 píxeles hacia abajo desde la parte superior de la imagen, esto corresponde realmente a un punto situado en (350, 400) en el escáner.
En la ilustración siguiente, la región externa representa el escáner plano. Aunque el algoritmo encontrará las coordenadas de la esquina superior izquierda de la región (150, 200), los valores que el filtro de segmentación debe establecer en el elemento secundario para WIA_IPS_XPOS y WIA_IPS_YPOS son 350 y 400.
Si, por ejemplo, una aplicación mostrará visualmente las regiones detectadas por el filtro de segmentación, debe tener en cuenta que el filtro de segmentación establece las coordenadas correspondientes a su posición en el plano. Esto significa que la aplicación debe asignar las coordenadas planas a las coordenadas de la imagen de vista previa. Sin embargo, en la mayoría de los casos, una aplicación realizará un examen de vista previa con WIA_IPS_XPOS = WIA_IPS_YPOS = 0 y sin rotación (WIA_IPS_ROTATION = VERTICAL). Si este es el caso, hay una asignación directa entre las coordenadas del plano y las de la imagen de vista previa.
Otra propiedad a la que debe prestar atención el filtro de segmentación es la propiedad de rotación, WIA_IPS_ROTATION, siempre que el controlador implemente esta propiedad. Supongamos, por ejemplo, que al adquirir la imagen de vista previa, la aplicación establece WIA_IPS_ROTATION en ROT180. En este caso, la esquina superior izquierda de la imagen pasada al filtro de segmentación corresponde realmente a la esquina inferior derecha en el plano. Por lo tanto, el filtro de segmentación debe asignar las coordenadas de cada subdivisión que detecta en la imagen girada a cuáles deben ser sus coordenadas en el plano. Una vez que el filtro de segmentación ha realizado esta asignación, puede establecer WIA_IPS_XPOS, WIA_IPS_YPOS y otros valores de propiedad en el elemento secundario correspondiente a la subimage.
Tenga en cuenta que, en la mayoría de los casos, WIA_IPS_XPOS y WIA_IPS_YPOS se establecerá en cero y WIA_IPS_ROTATION se establecerá en VERTICAL. Sin embargo, la segmentación debe ser capaz de controlar un caso en el que no están establecidos en estos valores.
Tenga en cuenta también que, aunque una aplicación puede pasar una imagen al filtro de segmentación que ha girado el controlador, no debe pasar una imagen en la que ya se haya realizado el escritorio.