Compartilhar via


Notas de implementação para filtros de segmentação

É importante observar as propriedades que o filtro de segmentação define em cada item filho que ele cria. Essas propriedades são: WIA_IPS_XPOS, WIA_IPS_YPOS, WIA_IPS_XEXTENT, WIA_IPS_YEXTENT e possivelmente WIA_IPS_DESKEW_X e WIA_IPS_DESKEW_Y. Esses valores de propriedade correspondem à posição do item no flatbed, não na imagem passada para o parâmetro pInputStream .

Portanto, é importante que o filtro de segmentação preste muita atenção às propriedades WIA_IPS_XPOS, WIA_IPS_YPOS e WIA_IPS_ROTATION da imagem passada.

Por exemplo, suponha que um aplicativo faça uma verificação de visualização em que define WIA_IPS_XPOS = WIA_IPS_YPOS = 200 no item (pai) antes de adquirir a imagem de visualização. Em seguida, ele chama o filtro de segmentação para detectar possíveis sub-regiões. No entanto, o algoritmo real usado no filtro de segmentação atua na imagem que é passada para ela. Se esse algoritmo detectar um canto da sub-região de 150 pixels à direita da borda esquerda da imagem e 200 pixels abaixo da parte superior da imagem, isso realmente corresponderá a um ponto localizado em (350, 400) no scanner.

Na figura a seguir, a região externa representa a base do scanner. Embora o algoritmo encontre as coordenadas do canto superior esquerdo da região como (150, 200), os valores que o filtro de segmentação deve definir no item filho para WIA_IPS_XPOS e WIA_IPS_YPOS são 350 e 400.

diagrama ilustrando um filtro de segmentação aplicado a uma parte de uma platen.

Se, por exemplo, um aplicativo exibir as regiões detectadas pelo filtro de segmentação visualmente, ele deverá estar ciente de que o filtro de segmentação define as coordenadas correspondentes à sua posição no flatbed. Isso significa que o aplicativo deve mapear as coordenadas de flatbed para as coordenadas na imagem de visualização. Na maioria dos casos, no entanto, um aplicativo executará uma verificação de visualização com WIA_IPS_XPOS = WIA_IPS_YPOS = 0 e nenhuma rotação (WIA_IPS_ROTATION = RETRATO). Se esse for o caso, haverá um mapeamento direto entre as coordenadas no flatbed e as da imagem de visualização.

Outra propriedade à qual o filtro de segmentação deve prestar atenção é a propriedade de rotação, WIA_IPS_ROTATION, desde que o driver implemente essa propriedade. Suponha, por exemplo, que, ao adquirir a imagem de visualização, o conjunto de aplicativos WIA_IPS_ROTATION como ROT180. Nesse caso, o canto superior esquerdo da imagem passada para o filtro de segmentação corresponde, na verdade, ao canto inferior direito do flatbed. Portanto, o filtro de segmentação deve mapear as coordenadas de cada sub-região que detecta na imagem girada para quais devem ser suas coordenadas no flatbed. Depois que o filtro de segmentação tiver executado esse mapeamento, ele poderá definir WIA_IPS_XPOS, WIA_IPS_YPOS e outros valores de propriedade no item filho correspondente à subimagem.

Observe que, na maioria dos casos, WIA_IPS_XPOS e WIA_IPS_YPOS serão definidos como zero e WIA_IPS_ROTATION será definido como PORTRAIT. No entanto, a segmentação deve ser capaz de lidar com um caso em que eles não estão definidos para esses valores.

Observe também que, embora um aplicativo possa passar uma imagem para o filtro de segmentação que foi girado pelo driver, ele não deve passar uma imagem na qual o deskewing já foi executado.