how to index a 3D image
3 ビュー (過去 30 日間)
古いコメントを表示
Stephen Devlin
2018 年 8 月 21 日
回答済み: Yuvaraj Venkataswamy
2018 年 8 月 21 日
Hi, I have an RGB tif image (no map) of some color bars (it wouldn't let me upload a tif). It is 77x300x30, each of the color bars is approximately 20 columns of data. I have taken the middle column out of each of the color bars and saved them to a new array, and then show it as an image. I tried a for loop and got nowhere with it, now I am trying to index it with an array but I am sure there is a more straightforward method than the longhand way I have used, any ideas?
clear all
close all
clc
img = imread('spectrum11.jpg');
imwrite(img, 'spectrum11.tiff');
%%==============================================
[B,map]=imread('spectrum11.tiff');
slice=B(1:10,:,:);
subplot(3,1,1)
imshow(B)
title('original spectrum11 pic')
subplot(3,1,2)
imshow(slice)
title('sliver of the spectrum')
%show a few rows of the image
slice_data=slice(1,:,:);
[r,c,d]=size(slice_data)
%%take the middle 5 columns of each colour bar from the slice_data.
%preallocate an array
spec=zeros(1,45,3);
%get an index for the middle of each color bar
ind=zeros(15,1,3)
ind_nums=(10:20:300)'
ind(:,1,1)=ind_nums;
ind(:,1,2)=ind_nums;
ind(:,1,3)=ind_nums;
%use index to extract the data from each of the RGB layers of slice_data
slice_data_1=slice_data(:,:,1);
slice_data_2=slice_data(:,:,2);
slice_data_3=slice_data(:,:,3);
A1=slice_data_1(ind(:,:,1));
A2=slice_data_2(ind(:,:,2));
A3=slice_data_3(ind(:,:,3));
A=zeros(1,15,3);
A(:,:,1)=A1;
A(:,:,2)=A2;
A(:,:,3)=A3;
Au=uint8(A);
subplot(3,1,3)
imshow(Au)
0 件のコメント
採用された回答
Yuvaraj Venkataswamy
2018 年 8 月 21 日
@Stephen Devlin: For this also, you can see the below link.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Line Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!