28.11.2012 Views

Procesamiento digital de video en tiempo real y - Maestría en ...

Procesamiento digital de video en tiempo real y - Maestría en ...

Procesamiento digital de video en tiempo real y - Maestría en ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Procesami<strong>en</strong>to</strong> <strong>digital</strong> <strong>de</strong> vi<strong>de</strong>o <strong>en</strong> <strong>tiempo</strong> <strong>real</strong> y “vi<strong>de</strong>o wall” con la PC 71<br />

for (iPixel=0; iPixel < numPixels; iPixel++, prgb++) {<br />

if(!(rand() % 3)) {<br />

prgb->rgbtGre<strong>en</strong> = 255;<br />

prgb->rgbtBlue = 255;<br />

prgb->rgbtRed = 255;<br />

}<br />

}<br />

5.6.10.3 Efecto imag<strong>en</strong> BMP<br />

Figura 5.15 Adición <strong>de</strong> ruido<br />

Aquí se superpone una imag<strong>en</strong> previam<strong>en</strong>te almac<strong>en</strong>ada <strong>en</strong> un archivo <strong>de</strong>l disco<br />

duro con formato BMP. La imag<strong>en</strong> se carga <strong>en</strong> un arreglo temporal, sin embargo esta<br />

imag<strong>en</strong> no pue<strong>de</strong> cont<strong>en</strong>er un numero <strong>de</strong> píxeles mayor a 5000, porque el sistema se cae,<br />

consi<strong>de</strong>ro que el motivo se <strong>de</strong>be a una cantidad <strong>de</strong> memoria preasignada al filtro y<br />

sobrepasarla la colapsa. Se p<strong>en</strong>só que el apuntador al píxel actual prgb siempre se<br />

<strong>en</strong>contraba <strong>en</strong> la esquina superior <strong>de</strong>recha <strong>de</strong> la v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o, sin embargo <strong>de</strong>p<strong>en</strong>di<strong>en</strong>do<br />

<strong>de</strong> las características <strong>de</strong> la computadora y el tipo <strong>de</strong> procesami<strong>en</strong>to el orig<strong>en</strong> se pue<strong>de</strong><br />

ubicar a <strong>en</strong> la izquierda y a la mitad <strong>de</strong>l alto <strong>de</strong> la v<strong>en</strong>tana <strong>de</strong> vi<strong>de</strong>o. En nuestro caso se<br />

ubicó <strong>en</strong> la esquina inferior izquierda y el conteo <strong>de</strong> píxeles es hacia arriba y hacia la<br />

<strong>de</strong>recha. Es por ese motivo que la imag<strong>en</strong> BMP se <strong>de</strong>be almac<strong>en</strong>ar invertida(<strong>de</strong> cabeza)<br />

para evitar un procesami<strong>en</strong>to adicional. La imag<strong>en</strong> se almac<strong>en</strong>ó <strong>en</strong> el arreglo bidim<strong>en</strong>sional<br />

bmiColors. El color ver<strong>de</strong> puro se utilizó como un color transpar<strong>en</strong>te dado que nuestra<br />

imag<strong>en</strong> no lo cont<strong>en</strong>ía. Los for adicionales son para posicionar la imag<strong>en</strong> <strong>en</strong> la pantalla.<br />

prgb = (RGBTRIPLE*) pData;<br />

//offset <strong>de</strong> la imag<strong>en</strong> superpuesta<br />

for(i = 0; i < (int)((cyImage/25)*(1 + cxImage)); i++, prgb++);<br />

for(iPixel = 0; iPixel < 60; iPixel++) {<br />

for(jPixel = 0; jPixel < 98; jPixel++, prgb++){<br />

if(bmiColors[iPixel][jPixel].rgbGre<strong>en</strong> != 255) {<br />

prgb->rgbtRed = bmiColors[iPixel][jPixel].rgbRed;<br />

prgb->rgbtGre<strong>en</strong> = bmiColors[iPixel][jPixel].rgbGre<strong>en</strong>;<br />

prgb->rgbtBlue = bmiColors[iPixel][jPixel].rgbBlue;<br />

}<br />

}<br />

for(jPixel = 98; jPixel < cxImage; jPixel++, prgb++);<br />

` }

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!