microprocessors and video

an important and recent aspect of processors is interactive input output.

early computers were non-interactive, e.g. batch jobs (card reader facility, and printing facility).

large computer facilities later became interactive (e.g. asr33 teletype, and later the CRT).

englebart's early visions: if the cathode ray screen of a radar set can display radar pictures... imagine pictures, and even letters of the alphabet appearing on a cathode ray screen in response levers, switches, and the like.

elglebart's concept (invention of mouse, interactive computing, etc.) was still mainframe oriented, though

with microprocessors (e.g. microcomputers) the interactivity is much more immediate.

early microprocessors (e.g. early microcomputers) used switches as input devices and LEDs as output devices, e.g. 4004-based microcomputer, or the 8085-based "sdk8085" system.

later, video was used for output (e.g. connection of computer to television screen).

what about video input?

the above is only half the story.

computers can and should have video input as well as output.

the "imaging chain" of ece385:

typical generic "imaging chain":

image representations

traditionally video output is often memory mapped, e.g. a region of memory in which an input picture is stored.

more and more, however, device drivers are being constructed to provide layers of abstraction, e.g.
insmod tv.o
cat temp.ppm > /dev/tv

is a contemporary approach to displaying an output image.

function call abstraction:
tv(temp)
tvscl(temp)

video input

concept of binary data, e.g. why we don't see numbers we can "atoi" in a picture...

fprint versus fwrite

fscan versus fread

example image format: pnm (Portable aNy Map)

P5
#this is a comment
320
240
255
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

example of color image: $ head trowel_out.ppm |less

P6
# cementinit v161.jpg 0.000000 0.000000 3.000000 -o trowel_out.plm
# cementi trowel_out.plm v168.jpg 3.000000 3.000000 0.000000
# cementi trowel_out.plm v167.jpg 0.000000 9.000000 0.000000
# plm2pnm trowel_out.plm -o trowel_out.ppm 
3060 2036
255
^@^A^A^A^B^B^C^C^C^C^B^B^B^B^A^A^@^@^@^@
^@^A^A^A^B^A^C^B^E^C^F^F^G^F^E^C^B^A^A^@
^@^A^A^B^C^C^F^F^B^B^A^A^A^A^C^C^B^C^@^A
^@^C^A^C^F^F^C^C^A^A^A^A^B^B^C^C^C^C^B^B
^A^C^E^E^F^F^B^B^@^@^@^@^A^D^@^G^B^D^B^D
^C^D^F^E^F^D^E^B^A^A^@^A^C^C^E^E^C^E^E^F
^E^F^E^F^E^F^C^E^C^C^C^C^C^C^B^B^C^C^C^C
^E^E^E^E^B^B^C^C^C^C^E^E^E^F^C^E^C^E^C^E
^A^D^A^D^A^B^B^C^C^E^C^E^A^B^@^A^C^F^B^E
^B^D^A^B^A^B^B^C^B^C^C^E^A^B^@^A^@^@^A^B
^C^E^C^E^A^D^@^F^@^A^B^C^B^D^@^D^A^C^C^E
^E^F^C^E^@^C^B^D^E^F^E^F^B^D^A^C^C^E^^@
^A^B^C^E^G^E^G^C^F^B^E^B^E^C^F^E^E^C^C^C
^C^C^C^C^C^C^C^C^C^C^C^F^F^C^C^C^C^C^C
^A^A^B^C^F^F^@^A^A^D^^B^F^A^D^A^D^A^D^B
^F^B        ^A  ^@^E^@^E^@^C^@^E^A^D^B^F^
^F  ^E^F^E^F^C^E^C^E^B^D^B^E^^B^D^A^D
^C^E^E^F^B^D^A^B^C^E^A^A^G^F
^F^F^E^E^^E^K^C
^B  ^C  ^^A^F^B^E^E^G^^^@^G^@^F^C^C
^F^E^G^E^F^F^^G^E^C^F^B^F^@^F^B^E^B
^G^@^E^@^E^A^E^@^E^@^C^@^B^@^C^@^D^B^F^C
^G^E^K^E^F^E^C^E^C^E^D^E^F^^^K^K^E^E
^A^D^C^C^F^F^E^E^B^B^B^C^F      ^^E^F^B^D
^A^D^E^F^F  ^E^G^F^E^C^C^A^D^C^E^@^E^@^C
^@^E^E^K^@^E^@  ^E  ^^E^E^B^C^E^F^B^G
^A^G^@^D^C^E^E^F
(END) 

note human readable header, and comments.

what do the numbers mean?

f(q(x,y))