Оттенки серого изображения вместо RGB - PullRequest
1 голос
/ 17 января 2020

Мне нужно изменить размер изображения без функции imresize (). Но результат получается черно-белым, даже если я загружаю изображение RGB. Что я должен изменить, чтобы получить изображение RGB?

clc;
clear;

[FileName, PathName] = uigetfile('*.JPG');
I=imread([PathName FileName]);  

ms=input('Input index of compression(>1)');
[m,n,v]=size(I);

if mod(m,ms)~=0
    m=ms*floor(m/ms);
end
if mod(n,ms)~=0
    n=ms*floor(n/ms);
end
C=I(1:m-1,1:n-1,:);
A=double(C);

figure
imshow(C)

[x,y,~]=size(A);
result=zeros(floor(x/ms),floor(y/ms));
p=1;
t=1;
for i=ms+1:ms:x
    for j=ms+1:ms:y
        arr=A(i-ms:i,j-ms:j);
        k=max(max(arr));
        result(t,p)=k;
        p=p+1;
    end
    t=t+1;
    p=1;
end

Ci=uint8(result);
figure
imshow(Ci) ```

1 Ответ

1 голос
/ 17 января 2020

RGB-изображение имеет 3 размера. Матрица изображений, возвращаемая функцией imread, имеет размер height × width × channels, где количество каналов равно 3 (красный, зеленый и синий).

Если вы хотите получить результат, который также является RGB image, вы должны инициализировать его как таковой и заполнить его значения в третьем измерении значениями цвета R, G и B:

result=zeros(floor(x/ms),floor(y/ms), 3);    % it has 3 color layers
p=1;
t=1;
for i=ms+1:ms:x
    for j=ms+1:ms:y
        arr=A(i-ms:i,j-ms:j, :);    % the color info remains unchanged
        k=max(max(arr));
        result(t,p,:)=k;    % `result` is a 3D array
        p=p+1;
    end
    t=t+1;
    p=1;
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...