从Image中将单个像素读入矩阵

时间:2012-04-08 09:38:05

标签: java matlab

我正在使用神经网络进行角色识别项目。 我的第一个目标是从图像中读取那些我找到任何字母的像素。我的意思是如果在随机位置的图像A,B和C中有三个字母,我将如何读取A,B和C的像素值并将它们存储在矩阵中?

3 个答案:

答案 0 :(得分:0)

问题不是很清楚。如果你的意思是你有像A.png,B.png等图像文件,你想要矩阵中的像素值,你可以在matlab中用

创建一个RBG矩阵
image = imread('A.png');

这将为您提供RGB值的宽度 - 高度-3矩阵。


感谢图片链接,让我们再试一次! : - )

因此,假设您不想手动说出每个角色的位置,我们必须自动找到它们。要执行此操作,请将其转换为黑白并使用bwconncomp查找每个字母的像素。

image = imread('A.png');
ibw = im2bw(image);
C = bwconncomp(image);
boxes = regionprops(C, 'BoundingBox');
letters = cell{26};
for i=1:26
  %get left, top, width, height from boxes(i).BoundingBox
  %I'm not on matlab at the moment, so I don't know exactly how to
  %but it should be quite easy.
  letters{i} = image(left:left+width, top:top+height, :);
end

找到连接组件后,我们使用regionprops获取其边界框,并将每个边界框放在单独的图像中。

答案 1 :(得分:0)

你可以这样做:

imageA=imread('imageA.jpg');
pixel1=imageA(y,x,:);

答案 2 :(得分:0)

使用Java时,您可以先将图像加载为BufferedImage:

BufferedImage image = ImageIO.read(imageUrl);

然后您可以使用以下内容获取单个像素RGB值:

image.getRGB(x, y);

您还可以使用Color对象将RGB整数值解析为单独的颜色代码。

Color color = new Color(image.getRGB(x,y));
int red = color.getRed();
int green = color.getGreen();
int blue = color.getBlue();

从这一点开始,你可以做任何你想要的事情。我过去曾经做过同样的事情。我的建议是,不要使用所有颜色使搜索空间过大。黑白也会在一开始就做。