Java數(shù)字圖像處理之圖像灰度處理
本文實例為大家分享了Java數(shù)字圖像處理基礎(chǔ)之圖像灰度處理,供大家參考,具體內(nèi)容如下
一、簡介
圖像灰度化處理可以作為圖像處理的預(yù)處理步驟,在圖像處理中是十分重要的一件事?;叶葓D像上每個像素的顏色值又稱為灰度,指黑白圖像中點的顏色深度,范圍一般從0到255,白色為255,黑色為0。
灰度轉(zhuǎn)換公式:
int gray = (int)(color.getRed() * 0.299 + color.getGreen() * 0.587 + color.getBlue() *0.114);
我們只是需要把每個像素點都轉(zhuǎn)化為灰度值,就可實現(xiàn)圖像的灰度轉(zhuǎn)化;
二、代碼演示
import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ImageGray extends Canvas { ? ? JFrame jframe = new JFrame("圖像灰度處理"); ? ? BufferedImage bufferedImage,bufferedImage_end ; ? ? Image image,image_end; ? ? public ImageGray(){ ? ? ? ? try { ? ? ? ? ? ? bufferedImage = ImageIO.read(new File("D:\\EDge下載地址\\lena.jpg")); ? ? ? ? } catch (IOException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? ? ? jframe.setLayout(null); ? ? ? ? // 定義位置 ? ? ? ? jframe.setBounds(200,200,800,600); ? ? ? ? this.setBounds(0,0,800,600); ? ? ? ? jframe.add(this); ? ? ? ? jframe.setVisible(true); ? ? } ? ? @Override ? ? public void paint(Graphics g) { ? ? ? ? image =(Image)bufferedImage; ? ? ? ? image_end =(Image)gray(bufferedImage); ? ? ? ? g.drawImage(image,0,0,null); ?// 顯示原圖 ? ? ? ? g.drawLine(350,10,350,600); ? ?// 中間的線 ? ? ? ? g.drawImage(image_end,370,0,null); ?// 顯示灰度圖片 ? ? } ? ? // 灰度處理,把原圖傳進(jìn)去,傳出來為修改后的圖 ? ? public BufferedImage gray(BufferedImage b){ ? ? ? ? int width = b.getWidth(); ? ? ? ? int height =b.getHeight(); ? ? ? ? // 下面這個別忘了定義,不然會出錯 ? ? ? ? bufferedImage_end = new BufferedImage(width,height, BufferedImage.TYPE_3BYTE_BGR ); ? ? ? ? // 雙層循環(huán)更改圖片的RGB值,把得到的灰度值存到bufferedImage_end中,然后返回bufferedImage_end ? ? ? ? for (int y = 0; y < height; y++) { ? ? ? ? ? ? for (int x = 0; x < width; x++) { ? ? ? ? ? ? ? ? // 獲取到(x,y)此像素點的Colo,轉(zhuǎn)化為灰度 ? ? ? ? ? ? ? ? Color color = new Color(bufferedImage.getRGB(x,y)); ? ? ? ? ? ? ? ? int gray = (int)(color.getRed() * 0.299 + color.getGreen() * 0.587 + color.getBlue() *0.114); ? ? ? ? ? ? ? ? Color color_end = new Color(gray,gray,gray); ? ? ? ? ? ? ? ? bufferedImage_end.setRGB(x,y,color_end.getRGB()); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return bufferedImage_end; ? ? } ? ? public static void main(String[] args) { ? ? ? ? new ImageGray(); ? ? } }
三、結(jié)果演示
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的ArrayList.trimToSize()方法詳解
這篇文章主要介紹了Java中的ArrayList.trimToSize()方法詳解,前幾天看了Java?ArrayList,沒有明白trimToSize()這個方法是什么意思,所以看了一下源碼并且debug一下自己的一個例子,明白了其中的含義,需要的朋友可以參考下2023-11-11MyEclipse整合ssh三大框架環(huán)境搭載用戶注冊源碼下載
這篇文章主要為大家詳細(xì)介紹了如何使用MyEclipse整合ssh三大框架進(jìn)行環(huán)境搭載,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10Java均攤復(fù)雜度和防止復(fù)雜度的震蕩原理分析
這篇文章主要介紹了Java均攤復(fù)雜度和防止復(fù)雜度的震蕩,結(jié)合實例形式分析了Java均攤復(fù)雜度和防止復(fù)雜度的震蕩相關(guān)概念、原理、實現(xiàn)方法與注意事項,需要的朋友可以參考下2020-03-03從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率
這篇文章主要介紹了從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12