поясню с изображением, так что вы можете получить лучшее понимание, как показано ниже:Проблемы с задним ходом повернутого изображения в MATLAB
С выше результата, все кажется нормальным. У меня есть изображение, и я пытаюсь повернуть это изображение с помощью imrotate
. В этом случае я использую поворот на 45 градусов против часовой стрелки. Однако, когда я пытаюсь изменить направление вращения (моя цель - получить нормальное положение изображения без вращения), все становится странным - особенно при разрешении изображения. Разрешение изображения уменьшается, и размер изображения изменяется из-за большого количества шума в этом изображении, как вы можете видеть на приведенном выше рисунке.
Дополнительная информация
Реальный Информация Изображение:
- Ширина: 512
- Высота: 384
зерна Информация изображения:
- Ширина: 513
- Высота: 385
Мой вопрос заключается в следующем - Как получить чистый и красивый образ, как исходного изображения?
У меня есть код, который я написал, показанный ниже:
clc;
close all; % Close all figure windows except those created by imtool.
imtool close all;
clearvars; % Get rid of variables from prior run of this m-file.
workspace; % Make sure the workspace panel is showing.
Rotation=45;
%Read the image
imagepad = imread('peppers.png');
%% Image Source Information
info1=size(imagepad);
fprintf('Real Image Information : \n'); % Message sent to command window.
fprintf(' Width : %d\n',info1(2)); % Message sent to command window.
fprintf(' Height : %d\n',info1(1)); % Message sent to command window.
fprintf('------------------------');
%%Try Rotate 45 degree
imRotate = imrotate(imagepad,Rotation);
%%
figure;
subplot(121);
imshow(imagepad);
caption = sprintf('Real Image');
title(caption, 'FontSize', 13);
subplot(122);
imshow(imRotate);
caption = sprintf('Rotate 45 degree result');
title(caption, 'FontSize', 13);
%%try to return the image position
imReturn = imrotate(imRotate,-Rotation);
%%Try to return the size of image
%% find pixel
%im = imread('im.png'); %# load image
[y,x] = find(all(imReturn>0, 3)); %# find black pixels
position = [x,y]; %# display them
[x1]=min(position);
[x2]=max(position);
%%Normal Size
Im2 = imcrop(imReturn,[x1(1) x1(2) (x2(1)-x1(1)) (x2(2)-x1(2))]);
figure, imshow(Im2);
caption = sprintf('Last Result image size');
title(caption, 'FontSize', 13);
%%
figure;
subplot(221);
imshow(imagepad);
caption = sprintf('Real Image');
title(caption, 'FontSize', 13);
subplot(222);
imshow(imRotate);
caption = sprintf('Rotate 45 degree result');
title(caption, 'FontSize', 13);
subplot(223);
imshow(imReturn);
caption = sprintf('Inverse Rotate 45 degree result');
title(caption, 'FontSize', 13);
subplot(224);
imshow(Im2);
caption = sprintf('Crop result');
title(caption, 'FontSize', 13);
%%Different Resolution
subplot(121);
imshow(imagepad);
caption = sprintf('Real Image');
title(caption, 'FontSize', 13);
subplot(122);
imshow(Im2);
caption = sprintf('Crop result');
title(caption, 'FontSize', 13);
%% Image Source Information
info2=size(Im2);
fprintf('Return Image Information : \n'); % Message sent to command window.
fprintf(' Width : %d\n',info2(2)); % Message sent to command window.
fprintf(' Height : %d\n',info2(1)); % Message sent to command window.
fprintf('------------------------');
спасибо, что этот метод работает отлично, но, все еще есть небольшая проблема с размером изображения, они также меняются, это мой последний результат о размере: Реальный Информация об изображении: Ширина: 512 Высота: 384 -----> Информация о возврате изображения: Ширина: 513 Высота: 385 ------------------------ >> и когда я пытаюсь для увеличения, есть один черный дополнительный пиксель на каждой стороне изображения, как устранить этот пиксель и получить правильный размер изображения, как реальное изображение. –
Размер, который вы не можете изменить, потому что изображение даже в размерности ... Это проблема автоматического обрезки. Этот дифференциал по размеру можно избежать, если строки и столбцы будут нечетными. Больше ничего не можешь сделать. – rayryeng
У вас есть другой код для автоматического обрезки для лучшего результата? –