作者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