Convertendo Imagem Colorida para Tons de Cinza na Screen 8



Documentos relacionados
a) sistema de cores aditivo b) sistema de cores subtrativo Figura 1. Sistemas de cores.

Atividade: matrizes e imagens digitais

Fotografia digital. Aspectos técnicos

Representação Binária de Dados

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Guia de qualidade de cores

O endereço de sua estação de trabalho é , e você esta usando a máscara de subrede:

Manual Processamento de Imagem. João L. Vilaça

Guilherme Lima. Designer Gráfico

Prof. Rafael Gross.

Hit dos Bits. Série Matemática na Escola

Estes filtros devem estar na lista de prioridade de suas compras pois eles protegem sua lente contra poeira, umidade e arranhões.

Gerência de Memória no MSX (II)

Hit dos Bits. Série Matemática na Escola

Aula 2 Aquisição de Imagens

Arquitetura de Computadores. Tipos de Instruções

Exemplo de Subtração Binária

LÓGICA DE PROGRAMAÇÃO

Fotografia Digital. Aula 1

Introdução à Organização de Computadores Entrada e Saída. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

ARQUITETURA DE COMPUTADORES. Sistemas de Numeração. 1 Arquitetura de Computadores

Elementos de linguagem: A cor

Considerações: Leia a lista toda, o quanto antes, para evitar más interpretações e muitas dúvidas em cima da hora

Cores em Computação Gráfica

Aula 01 Introdução à Informática. Prof. Bruno Gomes

Imagem digital. Unidade 3

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Controladores Lógicos Programáveis CLP (parte-3)

Sistemas Computacionais II Professor Frederico Sauer

BARRAMENTO DO SISTEMA

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano

Vamos exemplificar o conceito de sistema posicional. Seja o número 1303, representado na base 10, escrito da seguinte forma:

CURSO: Engenharia Elétrica e Engenharia de Computação. DISCIPLINA: Circuitos Lógicos I Z520234

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação

Quadro de consulta (solicitação do mestre)

Informática Aplicada a Radiologia

Rotação e Interpolação

Introdução à Organização de Computadores Memória Principal

AULA 1. Informática Básica. Gustavo Leitão. Disciplina: Professor:

Detecção e Rastreamento de Objetos coloridos em vídeo utilizando o OpenCV

Visão geral do sistema de armazenamento e hierarquia de memória

Sistemas Numéricos e a Representação Interna dos Dados no Computador

Codificação 1. Introdução. C 2 R r {! + codificação

COMPUTAÇÃO GRÁFICA CORES. Curso: Tecnológico em Análise e Desenvolvimento de Sistemas Disciplina: COMPUTAÇÃO GRÁFICA 4º Semestre Prof.

A Memória do MSX na Prática

Introdução à Computação

Eletrônica Digital 1 Módulo1 Capítulo 1 Sistemas Numéricos. Prof. Nilton Costa Junior

Projeto e Desenvolvimento de Algoritmos

Organização de Computadores

Memória principal; Unidade de Controle U C P. Unidade Lógica e Aritmética

Organização de Computadores. Cálculos Binários e Conversão entre Bases Aritmética Binária

Gama do monitor. Michael v.ostheim Tradução: Marcus Gama Tradução: André Marcelo Alvarenga

Prof. Dr. Charlie Antoni Miquelin BÁSICO DE COMPUTAÇÃO EM TC

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

UM POUCO DE COMPUTAÇÃO GRÁFICA.

Sistemas de Numeração

Tecnologia e Sistemas de Informações Administração dos Recursos de Hardware e Software

COR. Prof. Wanderlei Paré

Contextualização: Sistemas de Computação

Luz e Cor. Sistemas Gráficos/ Computação Gráfica e Interfaces FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO

FAZENDO PELES PARA O. PUXA RÁPIDO v0.8

ISL - Introdução. Sistema. Binário. Introdução. Tipos de Computador. Sub title text goes here. Unused Section Space 2. Unused Section Space 1

ULA Sinais de Controle enviados pela UC

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Registradores de uma CPU. Registradores de uma CPU - Acumulador

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

AVALIAÇÃO À DISTÂNCIA 1 GABARITO

Princípios de funcionamento dos computadores

PUBLICIDADE & PROPAGANDA PRODUÇÃO GRÁFICA

1.1. Organização de um Sistema Computacional

Nenhum dado é perdido durante o processo de compressão. Preserva todas as informações que permitirão a reconstrução exata da imagem. Reversível.

Conversores D/A e A/D

SMCB: METODOLOGIA PARA A QUANTIZAÇÃO DE CORES EM IMAGENS FACIAIS

3. Arquitetura Básica do Computador

Thales Trigo. Formatos de arquivos digitais

MEMÓRIA. A memória do computador pode ser dividida em duas categorias:

2. Representação Numérica

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Manual de utilização do selo

Hardware de Computadores

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Sistemas de Numeração

CAPÍTULO 6 ARITMÉTICA DIGITAL

Sistemas de Numeração. Engenharia da Computação 3 Período Alex Vidigal Bastos

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

AD / DA. EXPERIMENTS MANUAL Manual de Experimentos Manual de Experimentos 1 M-1116A

Fundamentos de Hardware

Manual de Aplicação da Marca do BRB

SAJ. Cadastro Excepcional para Processos Digitais

Entradas e Saídas Analógicas

Arquitetura de Rede de Computadores

19/11/2015. Um pouco de história antes... A FOTOGRAFIA. James Clerk Maxwell ( ) Escócia (Reino Unido) físico, filósofo e matemático.

Teoria da Cor TI. Elisa Maria Pivetta

Sistemas de Numeração

Capítulo 2. Numéricos e Códigos Pearson Prentice Hall. Todos os direitos reservados.

UCP. Memória Periféricos de entrada e saída. Sistema Operacional

Uso de interrupções de BIOS/DOS

Transcrição:

RGB to Gray

Convertendo Imagem Colorida para Tons de Cinza na Screen 8 Por: MarMSX Uma imagem digital é composta de 3 componentes de cores primárias no sistema aditivo: vermelho (red), verde (green) e azul (blue), também chamadas de sistema RGB. Diferentemente, o sistema de cores subtrativo, que é aquele que utilizávamos na escola para fazer pinturas e que também é utilizado em impressões, é formado pelas cores primárias ciano (azul claro), amarelo e magenta. Cada cor primária varia sua intensidade do mais escuro para o mais claro. Esta variação de valores na imagem digital é discreta, ou seja, são amostras de intensidade de cor em intervalos finitos de toda a faixa de valores. Dependendo do processador de vídeo, a quantidade de intervalos é maior ou menor. No MSX 2, por exemplo, o VDP possui 8 intervalos para cada componente de cor, possibilitando a combinação de 8 3 ou 512 cores distintas. Nos PCs atuais, o VDP possui 256 intervalos para cada componente de cor, totalizando cerca de 16 milhões de cores distintas. Uma imagem em tons de cinza é aquela em que as componentes de cores primárias, para cada ponto, possuem o mesmo valor. Dessa forma, podemos representar a cor através de uma componente apenas, fazendo-se uma média entre as todas as componentes de cor. Dessa forma, obteríamos o valor de cinza através da seguinte fórmula: GRAY = (RED + GREEN + BLUE) / 3 Existe outra fórmula, comumente usada em aplicações científicas, que leva em consideração a capacidade de absorção do olho humano. É uma média ponderada das componentes de cores primárias: GRAY = RED*0,3 + GREEN*0,59 + BLUE*0,11 Observa-se que esta conversão limita à imagem possuir apenas 8 intervalos distintos de cor, no caso do VDP do MSX 2. Podemos converter uma imagem colorida em uma imagem em tons de cinza, uma vez que está é um subconjunto do sistema colorido. O caminho inverso é complexo, uma vez que não há, a priori, informações quanto às cores originais. Deve-se ter em mente que, de acordo com o sistema de cores do MSX, da screen 7 para baixo os pontos são representados não pelas componentes RGB e sim pelo índice de uma tabela que contém o valor RGB de cada uma das 16 cores disponíveis (palheta de cores). Por outro lado, a screen 8 é um modo de tela em que o ponto é representado diretamente pelo sistema RGB. Como cada componente de cor no MSX 2 possui 3 bits (8 tonalidades), precisaríamos de 9 bits para representar cada ponto. Como cada byte possui 8 bits, decidiuse eliminar um bit da componente azul, razão adotada de acordo pelo fato de que o olho humano tem a menor capacidade de distinção desta componente de cor em relação às demais. Assim, cada ponto possui a seguinte configuração em bits: Bit 7 6 5 4 3 2 1 0 Cor G G G R R R B B

Por exemplo, se tivermos uma cor no sistema C = (R,G,B), onde C = (5,3,1), teríamos os seguintes valores binários: R = 101 G = 011 B = 01 Assim, o ponto em questão seria representado pelo valor (em binário): &B01110101. Deve-se lembrar que a ordem correta da configuração de cada ponto é green, red e blue. Serão apresentados dois algoritmos para a conversão de uma imagem colorida na screen 8 para tons de cinza. Um em Basic e outro em Assembly. O programa em Basic leva bastante tempo para rodar, enquanto que o programa em Assembly leva em torno de 1 minuto. O trabalho de cada programa é separar as componentes de cor para cada ponto, converter o valor de azul para 3 bits, calcular a média e finalmente fazer arranjo de bits de volta. A média aritmética foi escolhida pela maior simplicidade nos cálculos. Na página do MarMSX Develop, seção artigos, estão disponíveis o código fonte e os binários da experiência realizada. Listagem BASIC: 10 SCREEN 8 20 BLOAD"imagem.pic",S 30 FOR Y=0 TO 211 40 FOR X=0 TO 255 50 C=POINT(X,Y) 60 B=(C AND &B00000011)*7/3 70 R=(C AND &B00011100)/4 80 G=(C AND &B11100000)/32 90 K=INT((R+G+B)/3) 100 B=K*3/7 110 R=K*4 120 G=K*32 130 C=R+G+B 140 PSET(X,Y),C 150 NEXT X,Y 160 GOTO 160 Listagem Assembly: ORG &HC000 LD D,&HD4 ; Fim VRAM Screen 8 LD E,0 ; LD HL,0 ; Inicio VRAM Sc8 s1: LD IX,&H1OD ; RDVRM (Lê VRAM) Cor em A CALL &H15F ; Call subrom

PUSH DE ; Guarda DE LD D,0 ; Zera contador da média LD E,A ; Salva cor AND &B00000011 ; Separa o azul ; Converte 2 bits para 3 bits (por causa do R e G) LD D,A ; Acumula LD A,E ; Recupera cor AND &B00011100 ; Separa o vermelho SRL A ; Passa de 000RRR00 para SRL A ; 00000RRR ; Soma vermelho com azul LD D,A ; Guarda em D LD A,E ; Recupera a cor AND &B11100000 ; Separa o verde LD B,5 ; e1: SRL A ; Faz 00000YYY (Y = GRAY) DJNZ e1 ; Loop 5x ; Soma: Agora temos a soma das 3 cores LD D,FF ; Zera contador (- 1, por causa do algoritmo) LD B,3 ; Média dos 3 elementos e2:sub B ; A = A - B INC D ; D = D + 1 (D é o nível de cinza!) JR NC,e2 ; Se não negativo, continue LD A,D ; ; Faz 00YYY000 ; Faz 00YYYYYY ; Faz YYYYYY00 SRL D ; Converte Gray em 2 bits ; Finalmente YYYYYYYY LD IX,&H109 ; WRTVRM (Escreve nova cor) CALL &H15F ; Chama subrom INC HL ; Proximo ponto POP DE ; Retorna o valor de DE para fim de memória LD A,D ; CP H ; JR NZ,s1 ; Verifica se chegou ao final da memória LD A,E ; CP L ; JR NZ,s1 ; RET ; Retorna

Comentários Finais Devemos lembrar que a screen 8 possui exatos 54272 bytes e que o acesso ao VDP via OUTs é lento. Portanto, até mesmo o código em Assembly leva um certo tempo para executar, mas não muito longe de 1 minuto. A solução para este problema é utilizar o recurso de cópia rápida CPU VRAM e fazer a operação direta na RAM. Créditos Artigo escrito por Marcelo Teixeira Silveira, em 18 de março de 2008. Página: http://www.eng.uerj.br/~marcelo/msx