Discussion:
[問題]java做影像處理的參考資料?
(时间太久无法回复)
damn
2007-03-10 07:31:55 UTC
Permalink
請問各位大大,除了上java的官網上看API
(有看不一定懂阿XD)
還有什麼其他的參考資料嗎?
我也有上java論壇的網站 但是資料總是不夠齊全T.T
比如說有什麼書還是網站能夠提供更加完善的影像處理資料
感激不盡Orz

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.149.89
audi24
2007-03-14 05:02:51 UTC
Permalink
http://islab.ee.fju.edu.tw
知識庫

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.136.147.121
damn
2007-03-15 04:32:20 UTC
Permalink
※ 引述《liangkuo (良仔)》之銘言:
: ....
: 看PDF都要帳號密碼....
: ※ 引述《audi24 (audi24)》之銘言:
: : http://islab.ee.fju.edu.tw
: : 知識庫
好可惜...裡面的資料還滿多的@@...看的到吃不到阿XDDDD

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.149.89
asdf
2007-03-15 06:15:12 UTC
Permalink
分享一下過去的經驗

我們的開發環境是Java 1.5,不過重點是要內建ImageIO套件。

接著,第一個步驟是開檔:
public static BufferedImage loadJpegImage(String path, String filename) {
BufferedImage inBI = null;
File orgin;
orgin = new File(path + filename);

try {
inBI = ImageIO.read(orgin);
} catch (Exception e) {
logger.fatal("JPEG Image Load Fail" + e.toString());
}
return inBI;

}
利用以上的片段便可以取得一個jpg檔的BufferedImage

第二個動作是讀取影像資訊:
BufferedImage 可以利用

int rgb= BufferedImage.getRGB(int x, int y);

取得某個點的RGB值
接著可以將這個int 轉換為Color,利用

Color color=new Color(int rgb);

取得Color 之後便可以利用
Color.getGreen() ,Color.getRed ,Color.getBlue取得各色的成份。
註:
其實也可以利用位元操作直接從int rgb取得各色成份,只是用以上的方式會比較清楚。

轉換灰階:
由於大部分的影像處理都是以灰階影像作為基礎,所以在這邊加上灰階轉換的程式碼。
如果需要將一張BufferedImage轉換為灰階圖只要用以下的程式變可以取得。
public static int[][] bufferedImagetoGrayMatrix(BufferedImage BI) {

BufferedImage inBI = BI;
int height = inBI.getHeight();
int width = inBI.getWidth();
int[][] outarray = new int[height][width];

int c, green, red, blue;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
c = inBI.getRGB(j, i);
red = (c >> 16) & 0xFF;
green = (c >> 8) & 0xFF;
blue = (c >> 0) & 0xFF;
outarray[i][j] = (int) (red * 0.3 + green * 0.6 + blue + 0.1);

}
}

return outarray;
}
這邊的轉換公式是用graylevel=0.3R+0.6G+0.1B 如果需要更精細的公式可以自行修改。
如果看懂這個程式,要將rgb color space轉換到其他空間應該都可以自行處理。

寫入檔案:
做完處理,最後應該要把檔案寫回去把,這時候使用以下的程式即可。
public static void saveJpegImage(BufferedImage image,String
filename) {

File orgin;
orgin = new File(filename);
try {
ImageIO.write(image, "JPG", orgin);
} catch (Exception e) {
logger.fatal("JPEG Image Save Fail" + e.toString());
}

}

以上片段希望有些幫助。

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.229.34.77

Loading...