Как растянуть изображение в Matlab - PullRequest
1 голос
/ 02 июня 2011

Все,

Мне нужно знать, как растянуть изображение для дальнейшей работы.

Например, у меня есть следующие два изображения:

enter image description here enter image description here

Я хочу, чтобы числа заполняли весь квадрат следующим образом:

enter image description here enter image description here

любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Предполагая, что фон является постоянным значением, и что изображение не имеет постоянных строк, столбцов и что полезное изображение представляет собой прямоугольник в середине большего изображения с фоном:

colsWithImg = find(any(abs(diff(img)))); % idxs of cols with any img in it.
rowsWithImg = find(any(abs(diff(img'))));
imgWithNoBG = img(min(rowsWithImg):max(rowsWithImg),min(colsWithImg):max(colsWithImg));
% this will also work: but you will lose any constant rows / cols
% imgWithNoBG = img(rowsWithImg,colsWithImg);

Теперь, когда у вас есть изображение без фона, его легко растянуть, используя imresize, при условии, что у вас есть набор инструментов для обработки изображений.

resizedImg = imrezize(imgWithNoBG,newSize);

Чтобы удалить артефакт, сначала опишите расколотый выделенный символ:

descImg = floor((nDescLevels*imgWithNoBg)/max(max(imgWithNoBg)))
colsNoArtifact = find(any(abs(diff(descImg))));
rowsNoArtifact = find(any(abs(diff(descImg'))));

И затем извлечь правильные строки из некритичного изображения

img3 = imgWithNoBG(min(rowsNoArtifact):max(rowsNoArtifact),min(colsNoArtifact):max(colsNoArtifact));

Уменьшение количества уровней дескритизации поможет удалить больше артефакта, но с большей вероятностью ошибочноудалить часть персонажа.Я также предвижу некоторые проблемы с числами, такими как 1 или 7, где часть персонажа может быть принята за артефакт.

0 голосов
/ 02 июня 2011

Фон изображения черный? Белый? Найдите самый маленький прямоугольник, который окружает изображение. И обрежьте границы с помощью команды img (uppixel: downpoxil, leftpixel: rightpixel)

Вы найдете наименьший прямоугольник для цикла for и сравните каждый пиксель вне фона с границей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...