作者LEANSHC (LEANSHC)
看板AndroidDev
標題[請益] 影像處理問題
時間Thu May 5 20:41:41 2011
※ [本文轉錄自 Android 看板 #1DmXbKOb ]
作者: LEANSHC (LEANSHC) 看板: Android
標題: [請益] 影像處理問題
時間: Thu May 5 11:28:16 2011
各位廣大的板友大家好
小弟是最近剛接觸android
需要用到一段程式碼
主要是要手機拍照
然後將相片分割成兩張照片
再將這兩張照片的疊合再一起
疊合的方式是將兩張照片的畫素交叉排列
目前所寫的程式碼:
File file = new File("test.jpg");
if (!file.exists()) {
JOptionPane.showMessageDialog(null, "File does not Exists!");
System.exit(0);
}
try {
BufferedImage image = ImageIO.read(file);
final int width = image.getWidth();
final int height = image.getHeight();
BufferedImage leftsub =image.getSubimage(0, 0, width/2, height);
BufferedImage rightsub =image.getSubimage(width/2, 0, width/2, height);
int leftsubwidth=leftsub.getWidth();
int leftsubheight=leftsub.getWidth();
for (int y = 0; y < leftsubheight; y++) {
for (int x = 0; x < leftsubwidth; x++) {
leftsub.setRGB(x,y,leftsub.getRGB(x,y)&rightsub.getRGB(x,y));
小弟目前只想到說用&將兩張照片疊再一起
但是這結果不是我要的= =
能否請各位板友提供意見^^
自己的經驗非常不足...
請多加指教
補充一下
目的是要讓一張圖片
┌────────────┐
│ │
│ │
│ │
│ │
│ │
│ │
└────────────┘
切割成
┌──────┐┌──────┐
│ ││ │
│ ││ │
│ L ││ R │
│ ││ │
│ ││ │
│ ││ │
└──────┘└──────┘
LLLLLLLLLLLLLL RRRRRRRRRRRRRRR (畫素排列)
接下來合成
┌──────┐
│ │
│ │
│ │
│ │
│ │
│ │
└──────┘
LRLRLRLRLRLRLRL (畫素排列)
我目前問題點在於不知道要怎樣的程式碼去實現
原本在電腦上是用MATLAB執行
現在要轉到手機上使用
不大瞭解要如何去做
再請協助幫忙多多指點
感謝各位!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.125.31.67
※ 編輯: LEANSHC 來自: 140.125.31.67 (05/05 20:43)
1F:推 ericinttu:目前的效果長怎樣? 你要的效果又是什麼? 05/05 20:48
※ 編輯: LEANSHC 來自: 140.125.31.67 (05/05 22:46)
3F:推 ericinttu:疊合的方式是將兩張照片的畫素交叉排列 05/05 22:38
4F:→ ericinttu:交叉排列有:常見的有水平、垂直、棋盤格交叉三種。 05/05 22:38
5F:→ ericinttu:然後, leftsub.getRGB(x,y)&rightsub.getRGB(x,y) 05/05 22:39
6F:→ ericinttu:& 應該是邏輯運算的 AND. 05/05 22:39
7F:→ ericinttu:所以, 我還是不知道你要的交叉排列是什麼? 05/05 22:40
8F:→ ericinttu:你有學過 C/Java/Matlab 或其他程式語言嗎? 05/05 22:41
9F:→ ericinttu:有的話,要不要先用你熟悉的工具先做出你要的效果, 再移 05/05 22:42
10F:→ ericinttu:轉到 Android 開發環境上. 05/05 22:42
11F:→ ericinttu:另外, 你可以講一下你推文那張圖片是怎麼弄的嗎? 05/05 22:43
12F:→ ericinttu:你有辦法講得出來/分析出來的話,至少確保初步的概念是對 05/05 22:44
13F:→ ericinttu:的. 05/05 22:44
上面那張圖片 是利用MATLAB執行出來的
MATLAB程式碼
x = imread( 'L.jpg' );
y = imread( 'R.jpg' );
for num = 1:size(x,2)
if mod( num ,2) ==0
x( :, num, : )=y( :,num, : );
end
end
imwrite(x, 'LR.jpg');
IMAGE(x);
主要是讀取兩張圖片接著做畫素疊合排列
而我現在的要的結果一樣是做畫素疊何排列
但是是要用在Android系統上
而且多了一個步驟 原本是讀取兩張圖片
改變成從一張圖片切割成兩張圖片
不知道這樣解說有清楚嗎= =
小弟剛接觸 請多指教 感謝
※ 編輯: LEANSHC 來自: 140.125.31.67 (05/05 22:51)
14F:推 ericinttu:既然有補充資料, 那再說一個, 你的推文那個圖應該是兩張 05/05 22:50
15F:→ ericinttu:圖片交錯合在一起的吧? 跟你本文所說一張圖片分左右兩邊 05/05 22:51
16F:→ ericinttu:要合在一起, 有一點出入. 05/05 22:51
17F:→ LEANSHC:推文的圖是用兩張圖片沒錯 目前有一套方式可以用一次拍攝 05/05 22:54
18F:→ LEANSHC:就可以在照片上拍到兩張一樣的圖片 所以才加了切割的動作 05/05 22:56
19F:推 ericinttu:step 1: 可以取出 (0,0) 位置的 pixel value. 05/05 22:59
20F:→ ericinttu:step 2: 可以在 (0,0) 設定特定的 RGB 值. 05/05 23:00
21F:→ ericinttu:step 3: 可以取出 column 1 位置的所有 pixel value. 05/05 23:00
22F:→ ericinttu:step 4: 可以在 column 1 給予 n個特定的 pixel value. 05/05 23:01
23F:→ LEANSHC:其實我看不太懂....ˊˋ 05/05 23:05
24F:→ LEANSHC:你是說分別取兩張圖片的pixel value 還是?? 05/05 23:06
25F:推 ericinttu:這是分解動作啊, 一次想不到整個步驟時, 就一小步一小步 05/05 23:08
26F:→ ericinttu:完成. 05/05 23:08
27F:→ LEANSHC:小弟才淺...可以再詳細一點說明每個步驟嗎= = 05/05 23:14
28F:→ realmeat:老實說不清楚你要的東西是要啥, 可以說清楚一點 05/22 00:00
29F:→ realmeat:matlab 沒學過, 大略看起來像是偶數的x軸換成右圖 05/22 00:05
30F:→ realmeat:所以改成 if (x%2 == 0){填右圖}else{填左圖} 05/22 00:06