How can I know the value of pixel "ROI" in each (RGB) Channel?

조회 수: 6 (최근 30일)
Amr Azab
Amr Azab 2022년 7월 28일
댓글: Amr Azab 2022년 8월 2일
I hope someone can help me out.
I have 4 ROI Buildings, Cars, Street and Trees and each one has defined but what i need to know, How can i get the Values of pixels of ROI in each channel in RGB image (Red, Green and Blue)?
Please tell me exactly, the code, that i should write!
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% CleanUp
clc;
clear;
close all;
%Read Photo RGB and DSM
orph = imread('BE_ORTHO_27032011_315145_56865.tif');
figure, imshow (orph,[]);
%Define Region of interest
roi_Building = drawpolygon('Color','r');
roi_Street = drawline('Color','y');
roi_Tree = drawfreehand('Color','g');
roi_car = drawpolygon('Color','b');
%Seperate channels RGB
op_red= orph(:,:,1); % Red channel
op_green= orph(:,:,2); % Green channel
op_blue= orph(:,:,3); % Blue channel
%Value of pixels in all layers

채택된 답변

Walter Roberson
Walter Roberson 2022년 7월 28일
[r, c, p] = size(orph);
mask_building = createMask(roi_Building, r, c);
building_pixels = [op_red(mask_building), op_green(mask_building), op_blue(mask_building)];
This would be N x 3 where N is the number of selected pixels, and the columns are R, G, B.
But I wonder if what you would prefer would instead be
[r, c, p] = size(orph);
mask3_building = repmat(createMask(roi_Building, r, c), [1, 1, 3]);
masked_building = zeros(r, c, p, 'like', orph);
masked_building(mask3_building) = orph(mask3_building);
which would create a new imae masked_building in which the pixels that are not inside the ROI are all set to 0 (black)
  댓글 수: 8
Walter Roberson
Walter Roberson 2022년 8월 2일
Class_mean1 = size(AVG_BU);
You are taking the size() of the averages. Notice that in each case the size is 1 x 3, so the Class variables are each the two element vectors [1, 3]
Di_Building = sqrt((orph(:,:,1)-Class_mean1(1,1)).^2 + (orph(:,:,2)-Class_mean1(2,1)).^2 + (orph(:,:,3)-Class_mean1(3,1)).^2);
You index the 1 x 2 vector of size information at up to index (3,1) but the row vector of size information does not have 3 rows.
I suggest that you want to be subtracting AVG_BU(1) AVG_BU(2) AVG_BU(3)
Amr Azab
Amr Azab 2022년 8월 2일
Thank you Mr Walter

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

추가 답변 (0개)

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by