Page 1 of 1

Semana 01: Formación de señales e imágenes digitales

Posted: Mon Aug 06, 2018 6:58 pm
by AntonioG
Temas a cubrir:
  • Definición de señal (analógica y digital).
  • Formación de señales digitales.
  • Señales especiales.
  • Teorema del muestreo para señales digitales.
  • Definición de imagen digital.
  • Procesamiento básico usando operadores de vecindad.

Código básico ADC con arduino

Posted: Wed Aug 08, 2018 3:17 pm
by AntonioG

Code: Select all

int analogPin = 3;
int val = 0;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  val = analogRead(analogPin);
  Serial.println(val);
}

Representación con funciones pares e impares

Posted: Wed Aug 08, 2018 3:19 pm
by AntonioG

Code: Select all

x<-round(runif(9,0,1023))
n<-(-4):4
plot(n,x,type="h")
points(n,x,pch=19)


xo<-(x-rev(x))/2
xe<-(x+rev(x))/2

par(mfrow=c(4,1))
plot(n,x,type="h")
points(n,x,pch=19)

plot(n,xo,type="h")
points(n,xo,pch=19)

plot(n,xe,type="h")
points(n,xe,pch=19)

plot(n,xo+xe,type="h")
points(n,xo+xe,pch=19)

Frecuencia de Nyquist

Posted: Wed Aug 08, 2018 3:25 pm
by AntonioG

Code: Select all

library(tuneR)
library(seewave)

ruta<-file.choose()
data<-readWave(ruta)
spectro(data)
snd = data@left
plot(Mod(fft(snd)),type="l")
plot(Mod(fft(snd))[1:20000],type="l")

#para obtener el eje x correcto en Hz
rango<-1:4000
n<-rango*data@samp.rate/length(snd)
plot(n,Mod(fft(snd))[rango],type="l")

spectro(snd,f=data@samp.rate,flim=c(0,1),listen=TRUE)

T<-30
samples<-seq(1,length(snd),T)
data@samp.rate/T
spectro(snd[samples],f=data@samp.rate/T,flim=c(0,1),listen=TRUE)
#spectro(snd[samples],f=data@samp.rate/T,listen=TRUE)



Teorema del muestreo

Posted: Wed Aug 08, 2018 3:31 pm
by AntonioG

Code: Select all


f<-function(t)
   {
   ft<-0.5*sin(25*2*pi*t)+cos(13*2*pi*t)
   }

curve(f,from=0,to=1,n=2000,lwd=2)

k<-51
T<-1/k

samples<-seq(0,1,T)
xn<-f(samples)
plot(xn,type="h")
points(xn,pch=19)

curve(f,from=0,to=1,n=2000,lwd=2)
points(samples,xn,pch=19)

rect<-function(x)
   {
   res<-ifelse(x>=0 & x<1,1,0)
   return(res)
   }

triangle<-function(x)
   {
   res<-ifelse(abs(x)<=1,1-abs(x),0)
   return(res)
   }


sinc<-function(x)
   {
   res<-ifelse(x==0,1,sin(pi*x)/(pi*x))
   return(res)
   }

reconstruccion<-function(t,xn,T,Kernel)
   {
   y<-0
   for(n in 1:length(xn))
      y<-y+xn[n]*Kernel((t-(n-1)*T)/T)
   return(y)
   }

t<-seq(0,1,length.out=10000)
y<-reconstruccion(t,xn,T,rect)
curve(f,from=0,to=1,n=2000,lwd=2)
points(samples,xn,pch=19)
lines(t,y,lwd=2,col="red")

Ejemplo de imagen digital de 8x8

Posted: Fri Aug 10, 2018 6:48 pm
by AntonioG

Code: Select all

1769 2210 764
833 1163 431
919 1315 496
1026 1511 587
974 1380 522
957 1327 486
958 1357 511
1427 2467 908
929 1259 470
1012 1441 551
1131 1706 676
1212 1856 770
1024 1472 578
839 1146 432
894 1255 463
1746 3390 1204
926 1244 463
1597 2606 1165
1468 2350 1016
1618 2627 1155
1115 1507 574
1045 1413 523
1772 3185 1134
1041 1387 517
1202 1688 641
1629 2677 1204
1650 2707 1211
1388 2027 822
1052 1404 523
1046 1428 532
1866 3457 1235
943 1238 457
942 1270 472
1137 1616 633
1163 1657 647
1101 1524 580
966 1292 473
986 1356 507
1902 3556 1259
1146 1594 583
1086 1503 557
1129 1596 595
1161 1659 615
1264 1807 683
1236 1711 640
1323 1858 701
2413 4943 1675
1177 1726 637
1120 1634 607
1226 1815 671
1194 1761 660
1284 1857 699
1472 2116 782
1498 2261 835
2257 4721 1589
1948 3614 1268
1840 3253 1152
1891 3303 1167
1856 3177 1123
1778 3024 1075
1666 2765 988
1694 2908 1037
2138 4425 1527
2138 4425 1527

Visualización de la imagen digital de ejemplo

Posted: Fri Aug 10, 2018 6:49 pm
by AntonioG

Code: Select all

ruta<-file.choose()
x<-read.table(ruta,header=FALSE,sep=" ")
str(x)
R<-matrix(x$V1,ncol=8,byrow=TRUE)
G<-matrix(x$V2,ncol=8,byrow=TRUE)
B<-matrix(x$V3,ncol=8,byrow=TRUE)

R<-R[nrow(R):1,]
G<-G[nrow(R):1,]
B<-B[nrow(R):1,]

par(mar=c(0, 0, 0, 0))
image(R, useRaster=TRUE, axes=FALSE)

RGB<-array(0,dim=c(nrow(R),ncol(R),1,3))
RGB[,,1,1]<-255-R
RGB[,,1,2]<-255-G*0.75
RGB[,,1,3]<-255-B*0.5
class(RGB)<-c("cimg","imager_array","numeric")
plot(RGB/255)