Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/36: Рейтинг темы: голосов - 36, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98

Расширение изображения с преобразованием наклонных дальностей в земные координаты

03.08.2013, 09:33. Показов 6844. Ответов 76
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеются два одномерных массива чисел. R и D: R размерностью 1024 и D - 10240 . R это наклонные дальности по земле. D это пересчет этих дальностей в земные координаты. A это амплитуды, есть картинка (снимок) это получается яркости. причем R и D соответствуют одинаковые амплитуды. то есть надо преобразовать (R,A) в (D,A). а как это организовать я еще не понял.
Вложения
Тип файла: txt А.txt (3.3 Кб, 9 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.08.2013, 09:33
Ответы с готовыми решениями:

создание контура изображения с последующим его преобразованием
1)Может кто помочь ссылкой на книгу/статью в которой подробно описывается создание контура. 2) а после этот контур нужно преобразовать в...

Искажение изображения дефокусировкой и восстановление двумерным преобразованием Фурье и регуляризацией Тихонова
не кидай большие картинки! закинь сначало не больше чем 100*100, считает не быстро

Преобразовать Юпитерские года в Земные
Добрый день. Стояла задача преобразовать Юпитерские года в Земные. Один Юпитерский год равен 12 Земным годам. Написал код, все...

76
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.08.2013, 13:12
Вооот! С этого и надо было начинать!
Теперь все проясняется. Т.е. у нас с самолета делается сканирование поверхности, получается множество прямоугольных треугольников, где один катет - высота (630), гипотенузы - это наклонные дальности R, которым соответствуют свои катеты D (земные координаты). С преобразованием (R,A) в (D,A) вопросов нет, мне только хочу уточнить:

1. D - это расстояния (метры) или широта/долгота (градусы или радианы) ?

2. Разве нельзя R(1,1024) пересчитать в татой же по размеру D(1,1024)? Для чего нужно увеличивать размер, если там и так нули (а точнее - неизвестность)


Матлаба пока под рукой нет, попробую вечерком набросать.

*Удалять темы/сообщения пользователи не имеют права - так прописано в правилах. Но если надо убрать сообщение не по теме или ошибочое, то скажи мне и дай ссылку на него
0
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98
03.08.2013, 13:34  [ТС]
я не давно в этой теме поэтому и так коряво объясняю. D это метры. это делается для того чтоб растянуть картинку. могу скинуть изображение если интересно. A.txt тут всего одна строка )))
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.08.2013, 15:30
Ясненько
Смотри, если растягиват так как ты предлагаешь - в промежутки вставлять нули - это не совсем хорошо, т.к. в этих участках поверхности может быть совсем не ноль! Поэтому предлагаю для растягивания использовать интерполяцию. Таким образом мы вначале рассчитываем 1024 опорных значения D = f(R), где точно известна амплитуда A, а потом интерполируем оба массива до нужной длинны!
Получится примерно так:
Matlab M
1
2
3
4
5
6
7
8
clear, clc
A = dlmread('А.txt'); % амплитуды
R = 750 + 1.4*(0:1023); % расстояния
h = 600; % высота
D = sqrt( R.^2 - h^2 ); % исходные координаты
Di = linspase(min(D), max(D), 10240 ); % расширенный массив 
Ai = spline(D, A, Di); % интерполируем
plot(Di, Ai)
Но если нужно именно нулями забить - скажи, я подправлю

*когда будет возможность я пересмотрю тему и почищу
0
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98
03.08.2013, 15:52  [ТС]
Matlab M
1
2
3
4
5
6
7
8
9
clc; clear all;
format short g
n = 0:1024-1;
R = 933 + 1.4*n;
n1 = 0:10240-1;
c=cos(600./(933+n1*0.14));
D = 714.5+n1.*(0.14./c);
R(n)=A(n);
A=load('A.txt');
вот такое начало надо ,в D ты про угол то забыл .
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.08.2013, 21:53
Так?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clc; clear all;
format short g
n = 0:1024-1;
R = 933 + 1.4*n;
c = cos(600./(933+n*0.14));
D = 714.5 + n.*(0.14./c);
A = dlmread('А.txt');
 
X = linspace(min(D), max(D), 10240);
Ai = zeros(size(X));
for i = 1:length(D)
    [u d] = min( abs(X-D(i)) ); 
    % d - номер столбца с единицами, номер элемента в массиве m
    Ai(d) = A(i); % записываем столбец
end
plot(X,Ai)
0
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98
04.08.2013, 09:32  [ТС]
Слушай, а можно так сделать, чтоб Ai заполнялся не нулями, а амплитудами: A(1)=A(10)=2, то есть вместо нулей вставлять те значения амплитуд которые есть?

Еще меня волнует следующее. размер A сейчас (1*1024) а что будет если его увеличить до стандартов картинки (623,1024) и проделать то что мы хотим сделать. матлаб не вывезет поди?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
04.08.2013, 16:19
Цитата Сообщение от anton_petrovi4 Посмотреть сообщение
слушай а можно так сделать чтоб Ai заполнялся не нулями а амплитудами то есть A1=A10=2
Т.е. все значения от A(1) до А(10) заполнить 2, т.е. подставить значение А(1) ?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clc; clear all;
format short g
n = 0:1024-1;
R = 933 + 1.4*n;
c = cos(600./(933+n*0.14));
D = 714.5 + n.*(0.14./c);
A = dlmread('А.txt');
 
X = linspace(min(D), max(D), 10240); % новый расширенный массив
 
Ai = zeros(size(X)); 
d = ones(size(D));
for i = 2:length(D)
    [u d(i)] = min( abs(X-D(i)) ); 
    % d - номер столбца с единицами, номер элемента в массиве m
    Ai( d(i-1):d(i) ) = A(i); % записываем столбец
end
plot(X,Ai)
Слух, а чем тебе не подходит интерполяция? Ведь именно ее используют при изменении размеров картинки


Цитата Сообщение от anton_petrovi4 Посмотреть сообщение
что будет если его увеличить до стандартов картинки (623,1024) и проделать то что мы хотим сделать. матлаб не вывезет поди?
Та не боись, пережует! Разве что чуток дольше будет, но если использовать не растяжку, а интерполяцию (даже двумерную) это будет быстро
*кстати, в матлаб есть готовая функция изменения размера изображения imresize (описание)
0
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98
04.08.2013, 16:50  [ТС]
хочу bmp файл скинуть. чтоб ты посмотрел что это за снимок. только jpeg можно походу.

Добавлено через 2 минуты
Цитата Сообщение от Зосима Посмотреть сообщение
Т.е. все значения от A(1) до А(10) заполнить 2, т.е. подставить значение А(1) ?
да причем на всем промежутке от 0 до 1024 заменять теми числами которые стоят в значениях амплитуды.

Добавлено через 3 минуты
фото надо его экспонировать в bmp тогда можно в матлабе использовать
0
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98
04.08.2013, 16:51  [ТС]
вот !
Миниатюры
Расширение изображения с преобразованием наклонных дальностей в земные координаты  
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
04.08.2013, 16:53
anton_petrovi4, я перепутал вместо нулей, в новой расширенной матрице амплитуд Ai между соседними элементами будет текущее значение A.

Можешь bmp упаковать в архив и выложить но матлаб понимает все графические форматы.

И всё-же мне очень хочется узнать почему не подходит интерполяция? Для чего мы изобретаем велосипед?

Добавлено через 1 минуту
тебе нужно тоже самое сделать размером 10240 х 6030 ? (ну и пересчитать в (D,A))
0
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98
04.08.2013, 17:54  [ТС]
интерполяция не подходит потому что известны промежуточные значения . они равны амплитудам, вот только мне самому интересно что получиться в итоге.
0
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98
04.08.2013, 17:55  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
тебе нужно тоже самое сделать размером 10240 х 6030 ? (ну и пересчитать в (D,A))
да походу так и надо .
Вложения
Тип файла: rar 2013.08.01_13.54_.rar (495.3 Кб, 3 просмотров)
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
04.08.2013, 17:57
ану глянь:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
clc; clear all;
format short g
n = 0:1024-1;
R = 933 + 1.4*n;
c = cos(600./(933+n*0.14));
D = 714.5 + n.*(0.14./c);
A = dlmread('А.txt');
Img = imread('2013.08.01_13.54_.bmp');
 
X = linspace(min(D), max(D), 10240); % новый расширенный массив
 
Ai = zeros(size(Img,1), size(X,2)); 
d = ones(size(D));
for i = 2:length(D)
    [u d(i)] = min( abs(X-D(i)) ); 
    % d - номер столбца с единицами, номер элемента в массиве m
    j = d(i-1):d(i); 
    Ai(:,j) = Img(:,i*ones(size(j))); % записываем столбец
end
imshow(uint8(Ai))
Вот только картинка должна быть в одной папке с программой и кол-вл строк как было 603 так и осталось, т.е. расширилось по столбцам.
0
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98
04.08.2013, 18:32  [ТС]
слушай , а почему картинка сузилась?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
04.08.2013, 19:38
я ее увеличил только по столбцам!
0
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98
04.08.2013, 19:51  [ТС]
и куда первый столбец делся?

Добавлено через 48 секунд
и её так сузило? прикольно

Добавлено через 26 секунд
ты картинку то видел ?

Добавлено через 5 минут
и получается что столбцов 11 добавляется хотя прописано 10240-1
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
04.08.2013, 19:58
Вот, теперь по двум размерностям
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
clc; clear all;
format short g
 
I = imread('2013.08.01_13.54_.bmp');
 
nx = 0:size(I,2)-1;
ny = 0:size(I,1)-1;
Rx = 933 + 1.4*nx;
Ry = 933 + 1.4*ny;
cx = cos(600./(933+nx*0.14));
cy = cos(600./(933+ny*0.14));
Dx = 714.5 + nx.*(0.14./cx);
Dy = 714.5 + ny.*(0.14./cy);
 
X = linspace(min(Dx), max(Dx), 10*size(I,2)); % новый расширенный массив
Y = linspace(min(Dy), max(Dy), 10*size(I,1)); % новый расширенный массив
 
B = zeros(size(I)*10); 
% расширяем по столбцам
d = 1;
for i = 2:size(I,2)
    [u d(i)] = min( abs(X-Dx(i)) ); 
    % d - номер столбца с единицами, номер элемента в массиве m
    j = d(i-1):d(i); 
    Ai(:,j) = I(:,i*ones(size(j))); % записываем столбец
end
 
% расширяем по строкам
d = 1;
for i = 2:size(I,1)
    [u d(i)] = min( abs(Y-Dy(i)) ); 
    % d - номер столбца с единицами, номер элемента в массиве m
    j = d(i-1):d(i); 
    B(j,:) = repmat(Ai(i,:),[length(j),1]); % записываем строку
end
imshow(uint8(B))
Чтобы сохранить результат в файл, надо прописать в конце imwrite(uint8(B),'C:\01.png'), где C:\01.png - путь, имя и формат файла.
Вложения
Тип файла: rar Рис. 1.rar (1.09 Мб, 4 просмотров)
0
1 / 1 / 0
Регистрация: 21.07.2013
Сообщений: 98
04.08.2013, 20:50  [ТС]
подскажи пожалуйста почему с второго столбца присвоение начинается?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
04.08.2013, 21:23
Двоечка берется из-за этого: j = d(i-1):d(i), т.е. если начинать счет с единички, то 1-1=0 и матлаб будет ругаться, а вот с амплитудой я кажись ошибся - надо было присваивать не i-ю строку, а (i-1)-ю:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
clc; clear all;
format short g
 
I = imread('2013.08.01_13.54_.bmp');
 
nx = 0:size(I,2)-1;
ny = 0:size(I,1)-1;
Rx = 933 + 1.4*nx;
Ry = 933 + 1.4*ny;
cx = cos(600./(933+nx*0.14));
cy = cos(600./(933+ny*0.14));
Dx = 714.5 + nx.*(0.14./cx);
Dy = 714.5 + ny.*(0.14./cy);
 
X = linspace(min(Dx), max(Dx), 10*size(I,2)); % новый расширенный массив
Y = linspace(min(Dy), max(Dy), 10*size(I,1)); % новый расширенный массив
 
B = zeros(size(I)*10); 
d = 1;
A = zeros(size(I,1), size(I,2)*10);
for i = 2:size(I,2)
    [u d(i)] = min( abs(X-Dx(i)) ); 
    % d - номер столбца с единицами, номер элемента в массиве m
    j = d(i-1):d(i); 
    A(:,j) = I(:,(i-1)*ones(size(j))); % записываем столбец
end
d = 1;
for i = 2:size(I,1)
    [u d(i)] = min( abs(Y-Dy(i)) ); 
    % d - номер столбца с единицами, номер элемента в массиве m
    j = d(i-1):d(i); 
    B(j,:) = repmat(A(i-1,:),[length(j),1]); % записываем повторяющиеся строки
end
imshow(uint8(B))
Добавлено через 4 минуты
Забыл пояснить: j - это массив индексов расширенной матрицы, между соседними отсчетами исходной, т.е. если 5-й элемент исходной матрицы соответствует 12-му элементу расширенной, а 6-й исходной соответствует 23-му расширенной, то j = 12, 13, 14,..., 23 и во все эти позиции записывается значение амплитуды A(5)
Ясненько?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.08.2013, 21:23
Помогаю со студенческими работами здесь

Расширение изображения
Есть форма с загрузкой изображения. Проблема в том, что загружаются только JPG. Как сделать так, чтобы и другие форматы загружал? ...

Расширение изображения при наведении
есть таблица, в ней ячейка фиксированной длины, например 100px, у нее стоит background_image, у картинки ширина 200px, стоит свойство...

Определить расширение загружаемого изображения
Здравствуйте. Подскажите, как определить расширение загружаемого изображения(.png, .jpeg)?

Как определить расширение изображения в формате byte[]
Доброго времени суток. Я работаю с Java и MS SQL 2008 R2. Возникла необходимость сохранять изображения в БД. Я так и не разобрался, как...

Найти проекции наклонных.
Сам по геометрии не шарю. Так что прошу Вас помочь) Заранее спасибо. http://s019.***********/i638/1204/4e/26fb10ecd502.jpg


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru