看板 AndroidDev 關於我們 聯絡資訊
※ [本文轉錄自 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)
ericinttu:目前的效果長怎樣? 你要的效果又是什麼? 05/05 20:48
LEANSHC:你好^^ http://ppt.cc/rzHc 這是期望的狀態 05/05 22:32
※ 編輯: LEANSHC 來自: 140.125.31.67 (05/05 22:46)
ericinttu:疊合的方式是將兩張照片的畫素交叉排列 05/05 22:38
ericinttu:交叉排列有:常見的有水平、垂直、棋盤格交叉三種。 05/05 22:38
ericinttu:然後, leftsub.getRGB(x,y)&rightsub.getRGB(x,y) 05/05 22:39
ericinttu:& 應該是邏輯運算的 AND. 05/05 22:39
ericinttu:所以, 我還是不知道你要的交叉排列是什麼? 05/05 22:40
ericinttu:你有學過 C/Java/Matlab 或其他程式語言嗎? 05/05 22:41
ericinttu:有的話,要不要先用你熟悉的工具先做出你要的效果, 再移 05/05 22:42
ericinttu:轉到 Android 開發環境上. 05/05 22:42
ericinttu:另外, 你可以講一下你推文那張圖片是怎麼弄的嗎? 05/05 22:43
ericinttu:你有辦法講得出來/分析出來的話,至少確保初步的概念是對 05/05 22:44
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)
ericinttu:既然有補充資料, 那再說一個, 你的推文那個圖應該是兩張 05/05 22:50
ericinttu:圖片交錯合在一起的吧? 跟你本文所說一張圖片分左右兩邊 05/05 22:51
ericinttu:要合在一起, 有一點出入. 05/05 22:51
LEANSHC:推文的圖是用兩張圖片沒錯 目前有一套方式可以用一次拍攝 05/05 22:54
LEANSHC:就可以在照片上拍到兩張一樣的圖片 所以才加了切割的動作 05/05 22:56
ericinttu:step 1: 可以取出 (0,0) 位置的 pixel value. 05/05 22:59
ericinttu:step 2: 可以在 (0,0) 設定特定的 RGB 值. 05/05 23:00
ericinttu:step 3: 可以取出 column 1 位置的所有 pixel value. 05/05 23:00
ericinttu:step 4: 可以在 column 1 給予 n個特定的 pixel value. 05/05 23:01
LEANSHC:其實我看不太懂....ˊˋ 05/05 23:05
LEANSHC:你是說分別取兩張圖片的pixel value 還是?? 05/05 23:06
ericinttu:這是分解動作啊, 一次想不到整個步驟時, 就一小步一小步 05/05 23:08
ericinttu:完成. 05/05 23:08
LEANSHC:小弟才淺...可以再詳細一點說明每個步驟嗎= = 05/05 23:14
realmeat:老實說不清楚你要的東西是要啥, 可以說清楚一點 05/22 00:00
realmeat:matlab 沒學過, 大略看起來像是偶數的x軸換成右圖 05/22 00:05
realmeat:所以改成 if (x%2 == 0){填右圖}else{填左圖} 05/22 00:06