web-dev-qa-db-ja.com

Matlabで画像の赤チャンネルを表示するにはどうすればよいですか?

RGB画像を表す3D行列imがあります。できます

imshow(im)

画像を表示します。

一度に1つのRGBチャンネルのみを表示したい:赤のチャンネルを表示したいのですが、赤で表示したいのです。

私はもう試した

imshow(im(:,:,1))

しかし、それはグレースケール画像を表示します(これは私が望むものではありません)。

赤のチャンネルを表示して赤く表示するにはどうすればよいですか?

16
snakile

私はあなたのために3つの提案があります。

1。imagesc関数を使用して、赤いカラーパレットを選択します。

2。他のカラーチャンネルをクリアします:im(:,:,2:3) = 0; imshow(im);

ind2rgb関数を、それに応じて作成したカラーマップとともに使用します。

19
ypnos

これを試して:

% display one channel only
clear all;

im=imread('images/DSC1228L_512.jpg');
im_red = im;
im_green = im;
im_blue = im;

% Red channel only
im_red(:,:,2) = 0; 
im_red(:,:,3) = 0; 
figure, imshow(im_red);

% Green channel only
im_green(:,:,1) = 0; 
im_green(:,:,3) = 0; 
figure, imshow(im_green);

% Blue channel only
im_blue(:,:,1) = 0; 
im_blue(:,:,2) = 0; 
figure, imshow(im_blue);
4
harja

これを試して

I = imread('exemple.jpg');

%Red component
R = I(:,:,1);
image(R), colormap([[0:1/255:1]', zeros(256,1), zeros(256,1)]), colorbar;

%Green Component
G = I(:,:,2);
figure;
image(G), colormap([zeros(256,1),[0:1/255:1]', zeros(256,1)]), colorbar;

%Blue component
B = I(:,:,3);
figure;
image(B), colormap([zeros(256,1), zeros(256,1), [0:1/255:1]']), colorbar;
3
Landrover

赤い色だけを抽出したいということですか? im(:、:、1)を使用すると、赤のチャネルのみが3D画像から分離され、2D画像に変換されます。この単純なコードを試してください:

im=imread('example.jpg');
im_red=im(:,:,1);
im_gray=rgb2gray(im);
im_diff=imsubtract(im_red,im_gray);
imshow(im_diff);
2
Aatish Ali Khan

より良いビューのために、純粋な色を計算して表示することができます。式Rp = Rc /(Rc + Gc + Bc)。そして、赤のコード例:

_imagesc(im(:,:,1) ./ (im(:,:,1) + im(:,:,2) + im(:,:,3)))
_

これにより、他の色が除外されているため、カラー表示がより明確になります。

例を挙げて説明します。

元の画像:

enter image description here

画像の赤チャンネル(im(:,:,1)):

enter image description here

純赤:

enter image description here

0
Joren