RGB画像を表す3D行列im
があります。できます
imshow(im)
画像を表示します。
一度に1つのRGBチャンネルのみを表示したい:赤のチャンネルを表示したいのですが、赤で表示したいのです。
私はもう試した
imshow(im(:,:,1))
しかし、それはグレースケール画像を表示します(これは私が望むものではありません)。
赤のチャンネルを表示して赤く表示するにはどうすればよいですか?
私はあなたのために3つの提案があります。
1。imagesc
関数を使用して、赤いカラーパレットを選択します。
2。他のカラーチャンネルをクリアします:im(:,:,2:3) = 0; imshow(im);
。ind2rgb
関数を、それに応じて作成したカラーマップとともに使用します。
これを試して:
% 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);
これを試して
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;
赤い色だけを抽出したいということですか? 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);
より良いビューのために、純粋な色を計算して表示することができます。式Rp = Rc /(Rc + Gc + Bc)。そして、赤のコード例:
_imagesc(im(:,:,1) ./ (im(:,:,1) + im(:,:,2) + im(:,:,3)))
_
これにより、他の色が除外されているため、カラー表示がより明確になります。
例を挙げて説明します。
元の画像:
画像の赤チャンネル(im(:,:,1)
):
純赤: