|
19.10.2010, 22:33
|
#1
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Сжатия матрицы
Как матрицу к примеру 256*256 сжать до 16*16!Именя матрицу с единичек и нолей - соответственно черных и булых пикселей! Нвпример несли черных больше 100б в 256*256 то ето 1 в 16*16!!!
пробовал встроеным цыклом внешний
for i:=1 to 16-1 do for j:=1 to 16-1 do Begin for ImX:=1 to ImWidth-1 do for ImY:=1 to ImHeight-1 do Begin if a[ImX,ImY]=1 then kb:=kb+1;//kb -количество черных пикселей if kb>porog then b[i,j]:=0 else b[i,j]:=0; {porog макс знач черных точек в масиве} end; End;
Код вроде пашет, но при добавлении записи в файл во внутреннем цыкле
выдает ошибку!!!
|
(Offline)
|
|
20.10.2010, 00:30
|
#2
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Сжатия матрицы
if kb>porog then b[i,j]:=0 else b[i,j]:=0;
жуть какая, и как же это работает...
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.10.2010, 01:31
|
#3
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Ответ: Сжатия матрицы
По делу кто то ответить может???
|
(Offline)
|
|
20.10.2010, 01:47
|
#4
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Сжатия матрицы
Задай вопрос более понятно.
|
(Offline)
|
|
20.10.2010, 01:53
|
#5
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Ответ: Сжатия матрицы
Дан масив 256*256 с единичек и нолей(битовое изображения) нужно его сжать до размера 16*16 соответственно в сжатом масиве один символ будет ровнятся нескольким в большом! как это реализовать?
|
(Offline)
|
|
20.10.2010, 02:00
|
#6
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Сжатия матрицы
Думаю так:
for i:=1 to 16 do for j:=1 to 16 do Begin xStart := 1 + (i-1)*16; yStart := 1 + (j-1)*16; kb:=0; for ImX:=xStart to xStart + 15 do for ImY:=yStart to yStart +15 do if a[ImX,ImY]=1 then kb:=kb+1;//kb -количество черных пикселей if kb>porog then b[i,j]:=1 else b[i,j]:=0; {porog макс знач черных точек в масиве} End;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.10.2010, 15:03
|
#7
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Сжатия матрицы
можно ещё применить RLE чтоб ещё сильнее сжать
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.10.2010, 16:46
|
#8
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Ответ: Сжатия матрицы
да, но это ни к чему! лутше rle я применю в своем упаковщике ресурсов!!
|
(Offline)
|
|
20.10.2010, 22:17
|
#9
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Сжатия матрицы
2JACUK: хоть помог пример-то, который я поправил?
|
(Offline)
|
|
21.10.2010, 01:49
|
#10
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Ответ: Сжатия матрицы
как только до компа доберусь - сообщу! думаю завтра!
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:03.
|