カラーの画像をグレー​スケールにすることな​くラベリングしたい

조회 수: 7 (최근 30일)
Kazuki Hoashi
Kazuki Hoashi 2023년 6월 13일
답변: Akira Agata 2023년 6월 14일
下の画像のようなカラー画像で関数のみで色を認識させてそれぞれラベリングをしたいと思っています.
自分で考えた方法としてはピクセルごとのRGBの値を読み込んでいき,その3つの値の組み合わせで色を認識させて数字を置き換えていくようなことを考えたのですが可能でしょうか.
  댓글 수: 1
Atsushi Ueno
Atsushi Ueno 2023년 6월 13일
편집: Atsushi Ueno 2023년 6월 13일
>ピクセルごとのRGBの値を読み込んでいき,その3つの値の組み合わせで色を認識させて数字を置き換え
画素値を1つの値にまとめ(グレースケール化と同じ)、それを任意のラベル値に置き換えれば良いのですが、各種課題がある事に気付きました。
  1. 同色の連結要素が複数存在するか?それらを区別する必要があるか?
  2. 処理対象データにノイズや補間値が含まれているか?
1.同色の連結要素が複数存在するか?それらを区別する必要があるか?
この必要がある場合、色の区別だけではなく連結要素の認識も必要になります。
  • bwconncomp関数 (要Image Processing Toolbox)
  • regionprops関数 (要Image Processing Toolbox)
  • その他、同色の画素の連結要素を認識するロジック
2.処理対象データにノイズや補間値が含まれているか?
I = uint32(imread("https://www.mathworks.com/matlabcentral/answers/uploaded_files/1409354/image.png"));
N = I(:,:,3)*0x10000u32 + I(:,:,2)*0x100u32 + I(:,:,1); % 8[bit]*3 ⇒ 24[bit] にまとめる
[x,y] = meshgrid(1:size(N,2),1:size(N,1));
h = mesh(x,y,N); set(gca,'Zscale','log'); % 色の境界が補間されクッキリしていない
これは質問の画像データをPNGファイル経由で扱った事が原因です。論理的に生成したデータを扱えばこの様な問題はありません。この様な曖昧な値は何らかの方法で閾値を設けてグループ分け(離散化)する必要があります。やり方は色々あると思いますが、私は下記を思い付きます。

댓글을 달려면 로그인하십시오.

답변 (1개)

Akira Agata
Akira Agata 2023년 6월 14일
Image Processing Toolbox の imsegkmeans 関数を使う方法もあります。
% 元画像を読み込み
I = imread("https://www.mathworks.com/matlabcentral/answers/uploaded_files/1409354/image.png");
% 背景も含めて、RGB値の近いピクセルどうしを 6 種類にグループ化してラベル配列を作成
L = imsegkmeans(I, 6);
% 結果を確認
figure
imshow(L, [])

카테고리

Help CenterFile Exchange에서 Modify Image Colors에 대해 자세히 알아보기

제품


릴리스

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!