ニューラル ネットワークを使用した文字認識プロジェクトに取り組んでいます。私の最初の目的は、アルファベットを見つけた画像からそれらのピクセルを読み取ることです。つまり、画像 A、B、C のランダムな場所に 3 つのアルファベットがある場合、どのように A、B、C のピクセル値を読み取り、それらをマトリックスに格納しますか?
3 に答える
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();
この時点から、あなたはあなたがやりたいことをほとんど何でもすることができます。私は過去に同じことを扱ってきました。すべての色を使用して検索スペースを大きくしすぎないようにすることをお勧めします。初めは黒と白でもかまいません。
できるよ:
imageA=imread('imageA.jpg');
pixel1=imageA(y,x,:);
質問はあまり明確ではありません。A.png、B.png などの画像ファイルがあり、マトリックス内のピクセル値が必要な場合は、matlab で RBG マトリックスを作成できます。
image = imread('A.png');
これにより、RGB 値の width-height-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を使用してそれらの境界ボックスを取得し、各境界ボックスを個別の画像に配置します。