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 ...
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 />
` }