2014-10-07 5 views
3

У меня есть изображение, и я хочу сделать выборку. Прежде всего, мне нужно подключить нули между пикселями, чтобы [1,2,3] преобразовывался в [1,0,2,0,3]. Может ли кто-нибудь сказать мне, как это сделать, не используя paddarray и не используя for?Zero padding in Matlab

Спасибо заранее!

ответ

5

Нечто подобное ?:

B=zeros(size(img)*2); 
B(1:2:end,1:2:end)=img; 

Однако есть способы повышающей дискретизации в MATLAB без необходимости делать это вручную, например interp2

+1

Это своего рода домашнее задание, поэтому я не могу использовать панели инструментов обработки изображений. Но ты ответил на мой вопрос. Спасибо! –

+0

Вот что я считаю, что ОП тоже. +1. – rayryeng

3
V = [1,2,3]; 

padded(numel(V)*2) = 0; 
padded(1:2:end) = V 

А потом просто дело с конечным нолем, если numel(V) был нечетным

1

Существует функция upsample, которая делает именно это из Octave-Forge - см. docs on upsample.

Или вы можете посмотреть the source of upsample, чтобы узнать, что его реализует. Вы против использования пакета или функции?

+0

Упс; Прости. Источник явно говорит, что он несовместим с MATLAB. Думаю, вам просто нужно переключиться на Octave, чтобы решить вашу проблему ;-) –

+0

OP не нужно переключаться на Octave;). Здесь есть вполне приемлемые ответы. – rayryeng

+0

@rayryeng - Очевидно, что OP не нужно переключаться. Это была цель моего подмигивания, чтобы указать шутку/сарказм. ;-) Все четыре из этих ответов были опубликованы в течение нескольких минут друг от друга, и я рассмотрел другой (лучший!) Ответ, когда увидел его. Мой ответ намеревался как указание научить OP или других «ловить рыбу» - Octave-Forge - отличный ресурс, большая часть которого совместима с MATLAB. И, случайно, совместим с намерением «своего рода домашнего задания» OP. Похоже, кто-то проголосовал за несогласие с моим подходом, но я надеюсь, что это поможет кому-то! –

4

Вы также можете использовать способ динамического выделения переменных MATLAB, если вы не укажете число для индекса в массиве. Отключив индексирование в определенные места в вашем массиве, MATLAB по умолчанию заполняет эти значения нулями. Таким образом:

B(1:2:5) = 1:3 

B = 

1 0 2 0 3