выполнении условия представленного в четвертом блоке выполняется проходной режим кодирования, представленный в пятом блоке алгоритма. То есть второй ключевой пиксель (b2) на эталонной линии расположен левее второго ключевого пикселя на кодируемой линии (а1). В этом случае передается кодовое слово 0001. Затем происходит переопределение ключевых пикселов, счетчик массива эталонной линии увеличивается на единицу, а ключевым пикселям b1 и b2 присваиваются координаты следующей серии одноцветных пикселов. Затем переменной gor присваивается значение ложь, то есть отменяется горизонтальный режим кодирования, так как выполняются условия проходного режима кодирования. Операторы пятого блока выполняются в цикле с предусловием до тех пор, пока справедливо неравенство, представленное в четвертом блоке. В шестом блоке программа обращается к процедуре вертикального кодирования ( vert ), алгоритм которой описан ниже. В седьмом блоке проверяется, нужно ли запускать процесс горизонтального кодирования. Если проходной и горизонтальный режимы не были использованы, справедливо условие gor=true, в переменную f записывается код горизонтального кодирования '001', после чего записываются два одномерных кодовых слова, определяющих длины одноцветных групп пикселов. При этом неравенство в десятом блоке схемы проверяет условие конца кодирования.
После выполнения горизонтального кодирования в тринадцатом блоке переопределяется положение ключевого пикселя b1 в строке. Координата b1 устанавливается на уровне конца уже переданных одномерным способом цифр.
Второй ключевой пиксель на эталонной линии переопределяется в пятнадцатом блоке, пока справедливо условие 14.
В шестнадцатом блоке проверяется, нужен или нет следующий виток цикла, при выполнении условия кодирование прекращается.
Описание алгоритма восстановления изображения по методу Хаффмана
Восстановление эталонной линии
В первом блоке схемы выполняются начальные установки, необходимые для корректного восстановления закодированных данных. Где переменная J является счетчиком массива b для хранения восстановленных значений эталонной линии. В следующей строке с помощью оператора dl_f=length(f) переменной dl_f присваивается длина кодовой строки, записанной в переменной f. Второй блок приведенной схемы выводит на экран содержимое переменной. Затем в третьем блоке к переменной sr прибавляется значение i-го элемента строки f. В глобальной переменной sr хранится текущая кодовая комбинация, сравниваемая со всеми разрешенными. В четвертом блоке схемы проверяется выполнение условия j mod 2 = 0, при его выполнении четные элементы массива b заполняются подпрограммой zap после выполнения функции sap, представленной в шестом блоке. В противном случае выполняется функция sap2, то есть седьмой блок. Восстановление эталонной линии прекращается при выполнении условия в восьмом блоке алгоритма, то есть при поступлении кодовой комбинации конец строки.
Описание алгоритма функций sap и sap2
Подпрограммы sap и sap2 определяют, какой цифре соответствует содержимое глобальной переменной sr. По умолчанию функции присваивается значение равное 1800 для предотвращения ложных сработок при несовпадении содержимого переменной ни с одним значением.
Описание алгоритма подпрограммы zap
Подпрограмма zap предназначена для сложения двух цифр, полученных в результате расшифровки формирующего и завершающего кодовых слов. Она вызывается с параметром, полученным подпрограммами sap и sap2. В первом блоке схемы описывается тип параметра-значения. Второй блок определяет формирующую часть от завершающей. В четвертом блоке число, относящееся к формирующему слову, записывается в j-ю ячейку массива b. Если условие во втором блоке соблюдается, выполняются операторы, приведенные в третьем блоке. В результате присваивания b[j]:=b[j]+pi складываются формирующая и завершающая части числа . Затем счетчик массива увеличивается на единицу для записи
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.