2017-05-24 43 views
0

私は背景と似た色の丸いオブジェクトのイメージセグメンテーションを行っています。イメージはRGBですが、RGB値はグレーのトーンを示し、グレースケールではないイメージがグレーに見えても気付きます。セグメンテーションプロセスでは、セグメント化に使用するバイナリマスクを作成する前に、ラウンドオブジェクトをバックグラウンドから分離するために、グラデーションフィルタを適用し、再構成によって開閉しなければなりません。このプロセスで使用した関数の中には、2D配列の入力のみを受け入れるものがあります。実際、画像自体の2値化は、3D配列であるRGB画像ではなく、2D配列入力でのみ行うことができます。だから、私は灰色に見えるが他の何かをする前にグレースケールではない私のRGBイメージを変換しようとしています。しかし、私はrgb2gray関数を使用すると、次のエラーフォームのMATLABが表示されます。 rgb2gray> parse_inputs(line 77)を使用しているエラー MAPはm x 3配列でなければなりません。rgb2grayのエラー:MAPはm×3の配列でなければなりません

rgb2gray(行52)のエラー [X、threeD] = parse_inputs(X);

Mask_Biophysics(行2)のエラー フレーム= rgb2gray(rgb);

このエラーの意味と解決方法を知っている人はいますか? これは私にエラーを与えるコードの一部です:

rgb = imread( 'kids.tif'); フレーム= rgb2gray(rgb);

注意事前にインストールされたmatlabイメージ "kids.tif"を使用しています。したがって、エラーは私の特定のイメージとは関係ありません。 kids.tifはmatlabのRGBカラー画像です

+0

入力画像の 'rgb2gray'やタイプ/範囲の呼び出し方法は表示されません。どうやら、MATLABはあなたの画像がカラーマップだと考えています。 – beaker

+0

Frame1 = imread( 'kids.tif'); フレーム= rgb2gray(フレーム1); – user27407

+0

私は上記の私の実際のコードです。あなたが言いましたのは、私がエラーから解釈したものです。だから、私は、事前にインストールされたMATLAB画像のいずれかで同じコードを試しました "kids.tif – user27407

答えて

0

tifファイル(少なくとも'kids.tif')は、3Dマップ(RGB)マトリックスではなくカラーマップの2Dインデックスマトリックスです。 rgb2grayは、3D RGBマトリックスまたは2Dインデックスマトリックスを受け入れ、対応するカラーマップを受け入れます。試してみてください:

[rgb,cmap]= imread('kids.tif'); 
Frame= rgb2gray(rgb,cmap); 
関連する問題