0 / 0 / 0
Регистрация: 16.09.2014
Сообщений: 16
1

Ошибка в коде сжатия изображения методом Шеннона-Фано

19.03.2015, 12:30. Показов 786. Ответов 4
Метки нет (Все метки)

Пытался сделать программу которая сжимает графическою информацию методом Шеннона-Фано. Но при компиляции высвечивается сообщение "Debugger Exception Notification".

Код кнопки которая сжимает изображение методом Шеннона-Фано.

C++
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
37
38
39
40
41
void __fastcall TForm1::Fano1Click(TObject *Sender)
{
//процедура кодирования
int Res[512]; //длина кодовых символов
int W,H; //значения ширины и высоты изображения
char C[256][256]; //значения бит кодовой таблицы
int j, lb, x, y;
unsigned char buff, c;
int **Y; Y=new int*[H]; for(int j=0; j<H; j++) Y[j]=new int[W];
BYTE *YBL; YBL=new BYTE[W*H];//создаем массив для сжатых данных
int lenf=0; //задаем начальную длину сжатого массива данных
buff=(char)0;
lb=7;
for(y=0; y<H; y++)
{
for(x=0; x<W; x++)
{
for (i = 0; i < V; i++)
//если значение яркости пикселя изображения совпадает со значением YL кодовой таблицы, фиксируем номер i
if(Y[y][x]==YL[i]) break;
//формируем код длиной Res[i]
for(j=0; j<Res[i]; j++)
{
if(C[i][j]=='1') buff |= (1<<lb);
//если все биты байта buff заполнены, записываем buff в массив YBL
if(lb==0)
{
YBL[lenf]=buff;
buff=(char)0;
lb=7;
lenf++;
}
else lb--;
}
}
}
if(lb>0) YBL[lenf]=buff; //записываем последний байт
//вычисляем коэффициент сжатия
double ratio= 1.0*(H*W)/lenf;
Edit3->Text=FloatToStrF(ratio,ffFixed,6,4);        
}
Сообщение указывает на строчку "YBL[lenf]=buff;". Позже узнал, что якобы у меня значение выходит за предел заданного массива. И не могу понять, как исправить эту ошибку. Подскажите, пожалуйста.
Вложения
Тип файла: rar Исходник программы.rar (444.6 Кб, 4 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2015, 12:30
Ответы с готовыми решениями:

Алгоритм сжатия методом Шеннона-Фано
Народ, нужна помощь в поиске кода реализующего алгоритм кодирования и декодирования сообщения...

Реализация алгоритма сжатия данных методом Шеннона-Фано
Предполагается разработать программу сжимающая текстовый файл (*.txt) методом Шеннона-Фано, которая...

Алгоритм сжатия Шеннона - Фано
Здравствуйте, мне нужна помощь. Пишу программу Алгоритм сжатия Шеннона - Фано на Delphi. Нужен...

Кодирование методом Шеннона-Фано
Добрый день! Нужно доработать программу: #include &lt;iostream&gt; #include &lt;string&gt; using namespace...

4
653 / 574 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
19.03.2015, 17:11 2
Цитата Сообщение от snok777 Посмотреть сообщение
int W,H; //значения ширины и высоты изображения
в переменных мусор
Цитата Сообщение от snok777 Посмотреть сообщение
int **Y; Y=new int*[H]; for(int j=0; j<H; j++) Y[j]=new int[W];
new c непонятной размернойстью, вот Вам и ошибка
0
0 / 0 / 0
Регистрация: 16.09.2014
Сообщений: 16
19.03.2015, 17:35  [ТС] 3
aLarman
Даже если оставлю только так
C++
1
int **Y;//восстановленный массив изображения
То ошибка останется только будет уже указывать на
C++
1
 if(Y[y][x]==YL[i]) break;
0
653 / 574 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
19.03.2015, 17:55 4
snok777, да причем тут это, я про то что у Вас в переменных мусор, и какой размерности массив создается непонятно, поэтому скорее всего нехватка памяти
0
4039 / 2329 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
19.03.2015, 18:11 5
Переменные int W,H ничем, нигде и никем не инициализируются. Просто проясняю.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2015, 18:11
Помогаю со студенческими работами здесь

Шифрование методом Шеннона-Фано
Помогите пожалуйста создать на Java код который будет шифровать методом Шеннона фано плз).

Сжатие методом Шеннона-Фано (Pascal -> C++)
Есть код на pascal может кто-нибудь помочь перевести на с++ ? uses crt; var c:char; ...

Кодирование методом Шеннона-Фано и Хаффмана
Добрый день уважаемые форумчане, не могу выполнить задание по дискретной математике, нужно написать...

Кодирование фразы Методом Шеннона-фано и Хаффмена
Привет всем)))) помогите мне написать программу,пожалуйста)))) мне необходимо написать программу...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru