Boa tarde,
Este é um pequeno exercício de Sistemas Multimidias (INE5431). O mesmo consistia em:
1) Transforme a imagem do elefante em tons de cinza.
2) Gere 3 imagens fazendo a função de split RGB, cada imagens com intensidades luminosas proporcionais a um componente de cor.
3) Implemente um programa que transforme a imagem do elefante em imagem binária.
Primeiramente, como realizar conversão de RGB para Tons de cinza:
Y = 0.3R + 0.59G + 0.11B;
Para realizar a conversão para binário precisamos uma imagem de tons binários e aplicamos a seguinte lógica:
if (Y > 127) {b = 1; } else { b = 0; }
Para deixar somente uma componente de cor, necessitamos manipular a imagem para que a mesma fique somente com a componente que desejamos.
No projeto em anexo, acessamos uma imagem e temos várias funções que realizam a conversão para GrayScale, Binária e Componente RGB. Apartir da imagem original, criamos um Buffer do mesmo tamanho e percorremos os Pixels da imagem original realizamos as transformações adequadas em cada método e jogamos nesse novo Buffer, criando assim uma nova imagem.
Método responsável por receber um BufferedImage e converter o mesmo para tons de cinza
[code lang=”java”]
public static BufferedImage criaImagemCinza(BufferedImage imgJPEG) {
// Cria um novo Buffer para BYTE GRAY
BufferedImage img = new BufferedImage(imgJPEG.getWidth(), imgJPEG.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
WritableRaster raster = img.getRaster();
WritableRaster rasterJPEG = imgJPEG.getRaster();
// Para cada Pixel realiza a transformação para tons de cinza e joga na nova imagem.
for(int h=0;h<256;h++)
for(int w=0;w<256;w++) {
int[] p = new int[4];
rasterJPEG.getPixel(w, h, p);
p[0] = (int) (0.3 * p[0]);
p[1] = (int) (0.59 * p[1]);
p[2] = (int) (0.11 * p[2]);
int y = p[0] + p[1] + p[2];
raster.setSample(w,h,0,y);
}
return img;
}
[/code]
Método responsável por receber uma BufferedImage e converte-la para binária.
[code lang="java"]
public static BufferedImage criaImagemBinaria(BufferedImage imgJPEG) {
// Cria um novo buffer para binário
BufferedImage img = new BufferedImage(imgJPEG.getWidth(), imgJPEG.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
WritableRaster raster = img.getRaster();
WritableRaster rasterPB = criaImagemCinza(imgJPEG).getRaster();
// Para cada pixel realiza a verificação de se é mais cinza ou mais branco decidindo se o pixel será branco ou preto.
for(int h=0;h<256;h++)
for(int w=0;w<256;w++) {
int[] p = new int[1];
rasterPB.getPixel(w, h, p);
if(p[0] > 127) {
raster.setSample(w, h, 0, 1);
} else {
raster.setSample(w, h, 0, 0);
}
}
return img;
}
[/code]
Método responsável por receber um BufferedImage e um Tipo (R – 1, G – 2, B – 3) e só deixar a componente de cor escolhida.
[code lang=”java”]
public static BufferedImage criaImagemRGB(BufferedImage imgJPEG, int tipo) {
// Cria um novo Buffer para RGB
BufferedImage img = new BufferedImage(imgJPEG.getWidth(), imgJPEG.getHeight(), BufferedImage.TYPE_INT_RGB);
WritableRaster rasterT = img.getRaster();
WritableRaster raster = imgJPEG.getRaster();
// Para cada pixel pega a componente desejada e utiliza somente a mesma na nova imagem
for(int h=0;h<256;h++)
for(int w=0;w<256;w++) {
int[] p = new int[4];
raster.getPixel(w,h,p);
rasterT.setSample(w,h,tipo-1,p[tipo-1]);
}
return img;
}
[/code]
Manipulador de imagens para GrayScale, Binária e Componente de cor desejada.
Matheus
يخضع النظام لرقابة ترخيص رسمي يحفظ حقوق المستخدم ويؤمّن بياناته المالية.
تتجاوز مكتبة الكازينو 7000 لعبة تشمل السلوت والطاولات من مزودين مثل Play’n GO و Evolution.
يمكن الرهان على مباريات الدوري المصري إلى جانب كبرى البطولات الأوروبية والعالمية.
يكافئ نظام الولاء اللاعبين النشطين بنقاط قابلة للتحويل ومزايا حصرية في المستويات العليا.
تتنوع خيارات الدفع بين البطاقات البنكية والمحافظ الإلكترونية والكريبتو بحد أدنى منخفض.
888starz 888starz.