Уменьшение количества проблем с изображением - PullRequest
0 голосов
/ 08 января 2019

Итак, я пытаюсь уменьшить изображение, используя вложенные циклы for. Здесь у меня есть изображение 359x479 (widthxheight). Я пытаюсь уменьшить изображение до размера 180x240, удалив четные строки и столбцы. Тем не менее, это не похоже на работу. Я получаю то же изображение, что и на выходе.

a=imread('w.jpg'); %input image
a=im2double(a); %convert it to double
r=[[1 1 1];[1 1 1];[1 1 1]]/9;  % the next 3 steps done to low pass 
filter the image
c=imfilter(a,r,'replicate');
imshow(c);
for i=1:359 % for rows
    for j=1:479 %for columns
        if(mod(i,2)~=0) %to remove even rows
            if(mod(j,2)~=0) %to remove odd columns
               b(i,j)=c(i,j);  %if i and j are odd, the pixel value is assigned to b
            end
        end
    end
end 
figure, imshow(b);

должно получить изображение 180x240, но при этом получится то же изображение размером 359x479

1 Ответ

0 голосов
/ 08 января 2019

Вам также нужно назначить только один пиксель на два! Если вы этого не сделаете, половина ваших столбцов / строк будет содержать только значение 0.

, поэтому вам нужно использовать:

b(ceil(i/2),ceil(j/2))=c(i,j);

, где 2 соответствуют значению вашего модуля.

Вы также можете избежать использования некоторых циклов, просто написав:

b = c(1:2:259,1:2:194);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...