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.
Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me. Binance推荐奖金
888starz’ning mobil moslashuvchanligi har bir foydalanuvchiga shaxsiy tajriba taqdim etadi.
Bonus va aksiyalar 888starz foydalanuvchilarni jalb qilishda muhim rol o’ynaydi. Doimiy aksiyalar va promokodlar esa muntazam o’yinchilarni rag’batlantiradi.
starz888 скачать [url=https://www.888starz-uzb10.com/apk/]https://888starz-uzb10.com/apk/[/url]
O’yin tanlovi va provayderlar assortimenti 888starz-da keng. Demo rejim yordamida yangi o’yinlarni bepul o’rganish mumkin.
To’lovlar va mijozlarga xizmat ko’rsatish 888starz ning ustun tomonlaridan biridir. Mijozlarning fikrlari 888starz xizmatlarini rivojlantirishda muhim ahamiyat kasb etadi.
تتوفر واجهة معرّبة سهلة ضمن دعم يفوق 50 لغة لتناسب لاعبي مصر.
يوفر قسم الكازينو أكثر من 4000 لعبة سلوت من كبرى شركات التطوير.
يشمل الرهان الرياضي أكثر من 35 نوعًا يمتد من كرة القدم والتنس إلى الهوكي و UFC.
يقدم 888starz مكافآت مستمرة تشمل الاسترداد النقدي والترقيات.
يقبل الموقع البطاقات والمحافظ الإلكترونية إضافة إلى أكثر من 50 عملة مشفرة مثل BTC و USDT.
888 starz starz888
يمنح 888starz مستخدمي مصر بوابة موحّدة تضم آلاف الألعاب وعشرات الرياضات.
تتجاوز مكتبة السلوت 4000 لعبة من أبرز مزودي الصناعة.
starz 888 888stars
يمنح الرهان الحي احتمالات محدّثة لحظيًا مع متابعة مباشرة للمباريات.
يقدم قسم الرياضة عرضًا ترحيبيًا بنسبة 100% حتى 100 يورو.
يقبل الموقع البطاقات والمحافظ مثل Neteller و Skrill إلى جانب أكثر من 50 عملة رقمية.
تعمل المنصة تحت ترخيص دولي يوفر بيئة آمنة وشفافة لكل مستخدم في القاهرة.
يبرز الموقع مجموعة 888Games الخاصة ذات النتائج السريعة.
888 ستارز 888 ستارز
يشمل الموقع أكثر من 35 فئة رياضية تتابع أبرز الأحداث العالمية.
ينال لاعبو الرياضة بونص 100% يبلغ 100 يورو.
لا يستغرق إنشاء الحساب سوى دقائق معدودة على المنصة الرسمية.
The game runs on five reels and twenty fixed paylines that pay from left to right.
Lining up the lucky sevens delivers the highest standard payouts in the game.
20 super hot 20 super hot
The slot has fairly high volatility, meaning wins are less frequent but can be sizeable.
The biggest payouts come from full lines of sevens combined with the jackpot feature.
Responsible gambling practices are recommended when playing for real money.