Форум программистов, компьютерный форум CyberForum.ru

Swift

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
mizim
0 / 0 / 1
Регистрация: 02.11.2012
Сообщений: 16
#1

Представление изображения в памяти. Как? - Swift

21.10.2014, 19:28. Просмотров 1168. Ответов 7
Метки нет (Все метки)

Привет всем!

Понимаю, что по этому вопросу меня отошлют в другие ветки, например СИ, но всё же.
Вопрос такой: Что такое изображение в C++/Swift?

Поясню свой вопрос. С изображениями в программах работал исключительно в Matlab. Там всё весьма просто есть матрица NxMx3 или NxMx1. Сейчас хочу переписать одну свою программу из matlab'а на Swift. Смысл программы в том что, есть два индексных изображения, которые складываются между собой, а затем подсчитывается количество ячеек с определённым индексом. Затем одно изображение поворачивается и происходит новый пересчёт.

Не жду от Вас готового кода, просто хочется получить пояснение. Спасибо!

Make peace not war
Не бейте за swift. Я знаю, что я лох, которому лучше изучить C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
22.10.2014, 23:22     Представление изображения в памяти. Как? #2
изображение == матрица?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
23.10.2014, 09:30     Представление изображения в памяти. Как? #3
Vorona, ну теоретически - линейный массив
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,276
23.10.2014, 22:05     Представление изображения в памяти. Как? #4

Не по теме:

zulkis, походу нужно учить матчасть
http://matlab.exponenta.ru/imageprocess/book5/6_1.php


mizim, ну если не сильно вдаваться в подробности, то самое простое - это циклы и массивы(многомерные)
синтаксис языка довольно несложный и похож на другие, так что труда вообще не должно составить - мигрировать уже готовые решения с одного языка на другой

можно копнуть в сторону операций с матрицами на java/c# (если на молодом swift еще не реализовывали) и просто переписать тут
знаю, на haskell есть очень простые и удобные функции для работы с многомерными массивами, там бы это вообще было просто реализовать, но синтаксис довольно таки отличается
mizim
0 / 0 / 1
Регистрация: 02.11.2012
Сообщений: 16
24.10.2014, 00:06  [ТС]     Представление изображения в памяти. Как? #5
А можно чуточку подробней? (документацию на английском не понимаю, да и найти в ней найти не могу Привык к матлабовскому хэлпу.)

Проверил как представляется изображение:
C
1
2
var ImgData = UIImage(named:"rastr_6SG")
println(ImgData.size)
В консоле пишет: (256.0 , 256.0). Я так понимаю, что изображения всё-таки уже индексные? Плюс ко всему не могу вывести первый элемент матрицы (UIImage does not have a member name subscript). Как-то тяжко получается

И ещё вопросик. Не подскажите как в playground задать и вывести картинку, а то надоело экспериментировать с объектами)

P.S.: Прошу прощения за назойливость
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
24.10.2014, 09:25     Представление изображения в памяти. Как? #6
Vorona, написал много всего, потом решил сократить.
Я хоть 10ти мерный массив вам создам, это не изменит того, как изображение в памяти хранится.
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
24.10.2014, 12:42     Представление изображения в памяти. Как? #7
Цитата Сообщение от zulkis Посмотреть сообщение
Vorona, написал много всего, потом решил сократить.
Я хоть 10ти мерный массив вам создам, это не изменит того, как изображение в памяти хранится.
Правильно ж получается:
Если у нас есть двухмерный массив по адресу 0x123456, и мы обращаемся к его элементу array[x][y], то у нас выходит обращение к участку памяти по следующему адресу:
0x123456 + (x*размер хранимого элемента + y*размер хранимого элемента)

И аналогично для x-мерных массивов?

Добавлено через 8 минут
Не, сам уже понял, что фигню написал)) Буду сейчас на бумажке рисовать...

Добавлено через 8 минут
Вроде, выходит что-то типа такого, если мы создаем двумерный массив array[3][3] из unsigned char :

0x00 a a a
0x03 a a a
0x06 a a a

Следовательно, если мы обращаемся к array[1][2] (приняв за обозначение - [x][y]), то это будет обращение к участку памяти по адресу:
0x00 + x*sizeof(unsigned char)*общее кол-во элементов в размерности [x] + y*sizeof(unsigned char)
=
0x00 + 1*1*3 + 2*1 = 0x05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2014, 13:54     Представление изображения в памяти. Как?
Еще ссылки по теме:
C++/CLI WinForms Представление действительных чисел в памяти ПК
Представление вещественного числа в памяти ПК C++/CLI
Представление графов в памяти компьютера
C++ Представление в памяти массивов и матриц

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

Или воспользуйтесь поиском по форуму:
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
24.10.2014, 13:54     Представление изображения в памяти. Как? #8
kievkao, Да, все верно.
Yandex
Объявления
24.10.2014, 13:54     Представление изображения в памяти. Как?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru