Методы арифметического кодирования информации и сравнение их коэффициентов сжатия

Методы арифметического кодирования. Основные функции программ, реализующие алгоритмы кодирования по методам Хаффмана, Голомба, Фибоначчи и Элиаса. Разработка программно-аппаратных средств оптимального арифметического кодирования и их экономический расчет.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 26.05.2012
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Расчет затрат на основную заработную плату по теме приведенной в табл. 4.2:

Таблица 4.2 - Расчет затрат на основную заработную плату

Должность

Оклад, грн./мес.

Количество месяцев

Долевое участие, %

Сумма, грн.

Руководитель темы

1900,00

3

20

1140,00

Инженер

1100,00

3

100

3300,00

Итого за 3 месяца 4440,00

4.2.3 Дополнительная заработная плата

Она включает доплаты и надбавки к тарифным ставкам и должностным окладам в размерах предусмотренных действующим законодательством; премии и поощрения рабочим, руководителям, специалистам и другим служащим за производственные результаты; и другие расходы на оплату труда. Дополнительную заработную плату принимаем в размере 10% от :

грн

4.2.4 В состав элемента “Отчисления на социальные мероприятия” включаются:

- отчисления на обязательное государственное пенсионное страхование - 32% от;

- отчисления на обязательное социальное страхование - 2,5% от ;

- отчисления на общеобязательное государственное социальное страхование на фонд занятости - 2,5% от ;

- отчисления на индивидуальное страхование персонала предприятия - 1% от .

4.2.5 Амортизационные отчисления.

Амортизационные отчисления составляют 25 % от стоимости специального оборудования, и рассчитывается по формуле (4.2):

(4.2)

где - цена специального оборудования;

- кол-во месяцев работы.

В таблицу 4.3 занесем цены специального оборудования и количество месяцев их работы:

Таблица 4.3 -Стоимость специального оборудования

Оборудование

кол-во месяцев работы

Сумма, грн

Примечание

ЭВМ

3

3300,00

Разработка и тестирование программы

Принтер

1

650,00

распечатка

Итого

3950,00

;

4.2.6 Затраты на машинное время рассчитываются по формуле (4.3):

(4.3)

где - кол-во дней в месяце;

- число часов работы на ПК;

- стоимость Машино-час, грн.

4.2.7 Накладные расходы

Вспомогательные расходы по управлению предприятием, амортизационные отчисления по действующим нормам, затраты на охрану труда, отопление, освещение, услуги сторонних организаций. Накладные расходы рассчитываются как 25% - 30 % .

По результатам произведенных расчетов составляем калькуляцию себестоимости, которая приведена в таблице 4.4:

Таблица 4.4 - Калькуляция себестоимости разработки программно-аппаратных средств оптимального арифметического кодирования

Наименование статей калькуляции

Сумма, грн.

1. Сырье и материалы

69,00

2. Основная заработная плата

4440,00

3. Дополнительная заработная плата

444,00

4. Отчисления на социальные мероприятия:

- отчисления на обязательное государственное пенсионное страхование

- отчисления на обязательное социальное страхование

- отчисления на общеобязательное государственное социальное страхование на фонд занятости

- отчисления на индивидуальное страхование персонала предприятия

1855,82

1562,88

122,10

122,10

48,84

5. Амортизационные отчисления

219,79

6. Затраты на машинное время

480,00

7. Накладные расходы

1110,00

8. Сметная стоимость

8618,71

9. Прибыль (35%)

3016,55

10. Оптовая цена

11635,26

11. Сумма НДС

12. Цена продажи

2327,05

13962,30

4.3 Экономическая эффективность НИР

Специфической особенностью проведения экономической эффективности научно-исследовательских работ является их прогнозный характер, а также наличие неопределенности в области применения и объемах использования результатов научно-исследовательских работ, в уровне затрат на производство, в оценке влияния характеристик приборов на характеристики более сложных систем.

Определение экономической эффективности научно-исследовательской работы базируется на общих методах расчета сравнительной экономической эффективности новой техники.

Количественное определение экономической эффективности научно-исследовательской работы возможно, если есть база для сравнения, известна область и объем промышленного использования результатов научно-исследовательской работы. Однако специфика расчета экономической эффективности научно-исследовательской работы заключается в том, что результаты работы самостоятельного значения не имеют, а дают экономический эффект в народном хозяйстве только будучи опосредованными через длинную цепочку стадий технического прогресса.

В действующих методологических положениях о порядке образования, распределение и использование фондов экономического стимулирования технического прогресса рекомендуется относить на организации, выполняющие научно-исследовательские и опытно-конструктивные работы, от 30% до 50% экономического эффекта; на технологические работы от 20% до 30%; на освоение и организацию производства новой техники от 25% до 40% экономического эффекта.

Экономическую эффективность некоторых поисковых и прикладных научно-исследовательских работ рассчитать не удается. В таком случае приводят качественное описание социально-экономической эффективности научно-исследовательской работы.

Сущность этой методики состоит в том, что на основе оценок работы определяется коэффициент научно-технического эффекта НИОКР (4.4):

(4.4)

где ri - весовой коэффициент і-го признака научно-технического эффекта (таблица 5.8);

ki - количественная оценка і-го признака научно-технического эффекта научно-исследовательской работы.

Значения весовых коэффициентов НИОКР сведем в таблицу 1.5:

Таблица 1.5 - Коэффициент весомости признаков

Признак научно-технического эффекта НИОКР

Значение весового коэффициента

Уровень новизны

Теоретический уровень

Возможность реализации

0,6

0,6

0,4

Классификатор признаков научной новизны принимается равным k1=7, так как уровень новизны разработки определяется как новая.

В таблице 1.6 представлено описание уровня новизны разработки - новая.

Таблица 1.6- классификатор признаков научной новизны

Уровень новизны разработки

Характеристика новизны

Баллы

Новая

По-новому или впервые объяснены известные факты, закономерности, введены новые понятия, проведено существенное усовершенствование, дополнение и уточнение ранее достигнутых результатов., закономерности, введены в их работы:

5-7

Классификатор признаков теоретического уровня принимается равным k2=6, так как производится разработка нового способа.

В таблице 1.7 представлено описание признаков теоретического уровня при котором k=6:

Таблица 1.7 - классификатор признаков теоретического уровня

Теоретический уровень полученных результатов

Баллы

Разработка способа (алгоритм, программа мероприятий, устройство, вещество)

6

Классификатор признаков времени реализации принимается равным:

k3=k31+k32;

k31=4, так как время реализации в течение первых 4 лет;

k32=4, так как масштабы реализации в пределах нескольких предприятий.

В таблице 1.8 представим описание признаков времени и масштабов реализации для наших данных:

Таблица 1.8 - Классификатор признаков времени и масштабов реализации

Время реализации

Баллы

От 5 до 10 лет

4

Масштабы реализации

Баллы

Отрасль, министерство

4

Отсюда коэффициент научно-технического эффекта будет равен:

Нт = 0,6?7+0,6?6+0,4?(4+4)=11

Так как максимально возможное значение коэффициента научно-технического эффекта НИОКР Нт=12, то

Таким образом, проведенный анализ позволяет сделать вывод о целесообразности проведения данной исследовательской работы, так как значение коэффициента научно-технического эффекта НИОКР Нт находится на уровне 92% и не превышает максимальное значение.

4.4 Выводы

В результате проведенных расчетов была составлена калькуляция себестоимости программирования методов арифметического кодирования, которые по сути являются архиваторами. Сметная стоимость разрабатываемого продукта-8618,71грн. Поскольку предполагаемая область применения достаточно широкая, то цена может быть снижена за счет увеличения количества продаваемых копий исходной программной продукции. Прибыль составляет 3016,55 грн., а цена продажи - 1 3962,30.Стоимость специального оборудования - 3950,00.

5 Охрана труда и окружающей среды

5.1 Общие вопросы охраны труда и окружающей среды

Охрана труда -- это система законодательных актов, социально-экономических, организационно-технических, санитарно-гигиенических, лечебно-профилактических мероприятий и средств, обеспечивающих безопасность, сохранение здоровья и работоспособности человека в процессе труда [1].

В данном разделе рассматриваются вопросы охраны труда и окружающей среды для бакалаврского проекта на тему: «Программно-аппаратные средства оптимального арифметического кодирования ».

В ходе работы была разработаны программы вычисления различных кодов, с помощью которых возможно оптимизировать арифметическое кодирование информации. Эти программы написаны на языке программирования DALPHI. Разработка программ велась на компьютере AMD Athlon Dual Core Processor 3600+. Все разработки проводилась в НТУ “ХПИ”, в компьютерной лаборатории электротехнического корпуса. Компьютерная лаборатория находится на первом этаже трёхэтажного здания. Размер помещения 10x4=40 м2. Для работы одного человека в компьютерной лаборатории необходимо:

;

;

В данной лаборатории находится 6 рабочих мест, что соответствует санитарным нормам проектирования промышленных предприятий [13,32].

5.2 Опасные и вредные производственные факторы

Под вредным производственным фактором понимается такой фактор производственной среды, который при определённых условиях приводит к профессиональным заболеваниям или снижению работоспособности человека. Опасный производственный фактор, в свою очередь, при определённых условиях приводит к травме или резкому внезапному ухудшению здоровья.

Вредные факторы при определённой интенсивности воздействий могут быть опасными.

В таблице 5.1 приведен перечень вредных и опасных факторов, воздействующих на человека при работе с электронно-вычислительной техникой согласно ГОСТ 12.0.003-74 [20].

Таблица 5.1 - Опасные и вредные факторы

Наименование фактора

Источник фактора

Нормированное значение

Характер воздействия

Литература

Повышенное напряжение

Сеть 220 В, электроприборы

I = 0,6 мA

U=12 B

Поражение электрическим током и ожоги

[30,28,32]

Шум и вибрации

Печатающая техника вентиляторы системного блока и процессора

50 дБА

Утомление организма, снижение слуха, утомление ЦНС

[26]

Повышенный уровень статического электричества

Незаземлённые мониторы или части корпуса

15 кВ/м

Поражение током

[29,28]

Повышенная яркость света

Мощные осветительные приборы

В = 100 кд/м

Отрицательное воздействие на зрительные органы

[21,28,25]

Пониженная контрастность

Неисправность мониторов

К=0.9 %

Переутомление и физическое перенапряжение

[28,25]

Повышенный уровень рентгеновского излучения

Экраны и другие поверхности ЭВМ

100 мкР/ч на расстоянии 5 см от экрана

Мутагенные процессы во внутренних органах

[27]

Перенапряжение глазных анализаторов

Монитор ЭВМ

Удлинение времени реакции на свет на 40-50%

Головная боль, боль в глазах

[21,28]

Статическая перегрузка

Постоянная поза сидения

Снижение статической выносливости на 10%

Мышечная усталость

[21]

5.3 Промышленная санитария

5.3.1 Метеорологические условия помещения при работе

Основными факторами, которые характеризуют метеоусловия производственной среды, являются температура, влажность воздуха, подвижность воздуха и тепловое излучение.

Длительное воздействие на человека неблагоприятных условий резко ухудшает его самочувствие, снижает производительность труда, и частично приводит к заболеваниям. ГОСТ 12.1.005-88 [22] устанавливает в лабораториях оптимальные метеоусловия, учитывая время года и тяжесть выполняемых работ.

Важной составляющей трудового процесса пользователя ПК является значительная информационная нагрузка, поэтому категория выполняемой работы относится к легкой физической Iа (работа производимая сидя не требующая систематического физического напряжения, энэргозатраты до 120 Ккал/ч.), но умственно напряженной согласно ГОСТ 12.1.005-88.

По характеру окружающей среды помещение лаборатории относится к классу нормальных, так как в нем отсутствуют признаки свойственные помещениям, жарким, пыльным, с химически активной средой, так работа с ПК требует большой концентрации внимания, то микроклимат помещения должен характеризоваться оптимальными значениями параметров. Учитывая специфику работы за компьютером, оптимальные климатические параметры приведены в таблице 5.2 согласно ГОСТ 12-1.005-88 .

Таблица 5.2 - Микроклимат в рабочей зоне

Категория работ

Период года

Температура,

Относительная влажность, %

Скорость движения воздуха, м/с

Легкая физическая Iа, напряженная умственная

Холодный

20...23

40...60

0.1

Тёплый

23...25

40...60

0.1

Для обеспечения вышеуказанных оптимальных метеорологических условий и защиты от пыли, в помещении предусмотрено согласно СНиП 2.04.05-92 [24].:

- система отопления общая паровая,

- кондиционирование - кондиционеры типа БК-2000;

5.3.2 Освещение производственного помещения

Работоспособность человека во многом зависит от освещения. Неудовлетворительное освещение может исказить восприятие; кроме того, оно утомляет не только зрение, но и вызывает утомление организма в целом, что оказывает влияние на производительность труда.

Для обеспечения комфорта зрительных работ в помещениях с ПК применяется естественное и искусственное освещение, а также комбинированное, учитывая напряженность глазного анализатора, согласно ДБН В.2.5.-28-2006 [25] и СНиП II-4-79 [33].

Естественное освещение нормируется коэффициентом естественного освещения (КЕО) согласно ДБН В.2.5.-28-2006.

Нормированные значения КЕО (ен) для зданий расположенных в IV поясе светового климата (Украина) определяются по формуле (5.1)

(5.1)

где -- значение КЕО для зданий, которые расположены в третьем поясе светового климата Украины, с учетом характеристик зрительной работы = 1,5%;

m -- коэффициент светового климата (для IV светового пояса m=0.9);

с -- коэффициент солнечности климата, учитывает дополнительный световой поток, проникающий через световые проемы в помещение за счет прямого и отраженного от подстилающей поверхности солнечного света в течение года (определяется исходя из ориентации окон по сторонам света, для окон выходящих на юго-восток и IV-го пояса светового климата c=1).

Характеристики зрительной работы пользователя ПЭВМ следующие:

- разряд зрительных работ III - высокой точности;

- подразряд в;

- наименьший размер объекта различения от 0,3 до 0,5 мм;

- Контраст объекта различения с фоном средний или большой;

- Характеристика фона светлый и средний.

В тёмное время суток используется искусственное освещение. Согласно

ДБН В.2.5.-28-2006 освещенность комбинированная 750 лк, общая 300 лк.

Общее освещение выполнено в виде прерывистой линии светильников. Учитывая возможности и требования к экономии электроэнергии, выберем для общего освещения компьютерного класса электролюминесцентные светильники ЛДЦ-40, световой поток 750 Лм. Выбранный светильник прямого света характеризуется диффузным отражением, защитным устройством, предохраняющим от ослепления и отражённого блеска, и оснащённого защитным устройством для регулирования яркости. Кроме того, они имеют больший срок службы -- 10000 ч. Степень защиты соответствующая классу помещения П-IIа для светильников IP2X.

5.3.3 Излучение от экрана

ЭЛТ генерирует несколько типов излучения: рентгеновское, радиочастотное, ультрафиолетовое и инфракрасное.

Уровни этих излучений низкие и не превышают допустимых норм. Конструктивное решение экрана дисплея таково, что рентгеновское излучение от экрана на расстоянии 5 см не превышает 100 мкР/ч., что отвечает эквивалентной дозе 0.1 мбер/год ( НРБУ-97 [27] ).

Следует учитывать, что мягкое рентгеновское излучение, возникающее при напряжениях на аноде 20-22 кВ, а также напряжение на токоведущих участках схемы вызывают ионизацию воздуха с образованием положительных ионов, неблагоприятных для человека. Уровни ионизации воздуха помещения для работы на ПЭВМ приведены в таблице 3 согласно ДНАОП 0.03-3.06-80 [23].

В таблице 5.3 приведены нормы допустимых уровней ионизации воздуха:

Таблица 5.3 - Нормы допустимых уровней ионизации воздуха

Уровень ионизации

Количество ионов в 1 смі воздуха

n

n

Минимально необходимый

400

600

Оптимальный

1500-3000

3000-5000

Максимально допустимый

50000

50000

Поддержание допустимых уровней ионизации воздуха обеспечивается кондиционерами типа БК-2000 согласно СНиП 2.04.05-91.

5.3.4 Шум и вибрация

В компьютерной лаборатории наиболее сильными источниками шума и вибрации являются печатающая техника, а также вентиляторы процессора и блока питания. Уровень их звукового давления в рабочих местах не превышает 50 дБа, что соответствует нормам ГОСТ 12.1.003.-83* [26],и вибрация в помещениях незначительная, так как незначительны источники вибрации ГОСТ 12.1.012.-90. Так как для источников шума и вибрации предусмотрены конструктивные меры защиты (исполнение шумовиброустойчивом варианте), то дополнительные средства защиты от шума и вибрации не используются.

5.3.5 Электробезопасность

Все оборудование используемое при работе, является потребителем однофазной сети переменного тока с частотой 50 Гц, напряжением 220/380 В, мощность, потребляемая от сети переменного тока, не превышает 1 КВт, и оборудована глухозаземленной нейтралью от поражения электрическим током обслуживающего персонала согласно ГОСТ 12.1.038-82* [30].Этим обеспечивается невозможность появления напряжения относительно земли больше 220В. Электропитание осуществляется от электроустановки (трансформатора), с регулируемым напряжением под нагрузкой. Напряжение от сети подаётся в распределительные шкафы. Лаборатория, где находится много энергоёмкого оборудования, относится к классу помещений с повышенной опасностью поражения человека электрическим током ГОСТ 12.2.007.0-75* [31]. Для обеспечения электробезопасности, предусмотрены конструктивные, схемно-конструктивные и эксплуатационные меры электробезопасности.

5.3.6 Пожарная безопасность

Понятие пожарная безопасность означает состояние объекта, при котором исключается возможность пожара, а в случаях его возникновения предотвращается воздействие на людей опасных факторов пожара и обеспечивается защита материальных ценностей. Причины, которые могут вызвать пожар в рассматриваемом помещении, являются: неисправность электропроводки и приборов; короткое замыкание электрических цепей; перегрев аппаратуры и изоляции; молния и статическое электричество.

Классификация:

Здание, где находится компьютерный класс, по пожарной безопасности относится к категории В - пожароопасное, в нём находятся твёрдые сгораемые материалы и вещества, НАПБ Б 07.005-86 [15], степень огнестойкости здания относится к III-й степени (конструкции выполнены из естественных и искусственных каменных материалов, бетона или железобетона с применением листовых и плиточных негорючих материалов) в соответствии со ДБН В.1.1-7-2002 [18]. Класс помещения согласно ПУЭ-87 [17] по пожарной опасности П-Iiа, так как в нем находятся твердые горючие вещества, не способные переходить во взвешенное состояние.

Пожарная безопасность в соответствии с ГОСТ 12.1.004-91 [16] обеспечивается системами предотвращения пожара, пожарной защиты, организационно-техническими мероприятиями.

Система предотвращения пожара включает:

- контроль и профилактику изоляции;

- наличие плавких вставок и предохранителей в оборудовании;

- для защиты от статического напряжения используется защитное заземление;

Для данного класса здания с учётом количества грозовых часов в году (г. Харьков) устанавливается 3 категория молниезащиты.

Степень защиты, соответствующая классу помещения П IIа:

Для оборудования IP 44.

Для светильников IP 2Х.

Система пожарной защиты:

Предусматривается наличие углекислотных огнетушителей ОУ-2 в количестве 4 штук (1 шт. на 10 кв.м), в связи с использованием в помещении электроустановок, а также система автоматической пожарной сигнализации, которая оснащена дымовыми сигнализаторами.

Организационные меры защиты:

Предусматривается мероприятия по обучению персонала соблюдению правил пожарной безопасности, а также ознакомление с планом его эвакуации в случае пожара;

Для успешной эвакуации персонала двери помещения имеют следующие размеры:

Ширина не менее 1.5 м

Высота не менее 2.0 м

Ширина коридора 1.8 м. Рабочее помещение должно иметь два выхода. Расстояние от наиболее удаленного рабочего места не должно превышать 100 м. В здании имеются два эвакуационных выхода.

5.4 Охрана окружающей среды

Работа по разработке приборов за компьютером экологически чистая и не оказывает на окружающую среду вредного влияния, поэтому раздел охраны окружающей среды не рассматривается.

Заключение

Методы сжатия дискретных сигналов нашли широкое применение в различных микропроцессорных биомедицинских системах. Важным вопросом при выборе алгоритма сжатия является выбор кода для двоичного представления коэффициентов преобразования, обеспечивающего минимальное число бит в выходном двоичном потоке и, следовательно, максимальный коэффициент сжатия. Наиболее часто для этой цели используются унитарный код, коды Голомба, Хаффмана, Фибоначчи, Элиаса, Ивэн-Роде.

В данной работе разрабатывались программно-аппаратные средства оптимального арифметического кодирования. Рассмотрены методы оптимального кодирования, которые являются трансформирующими и поточными, то есть могут применяться даже в том случае, когда объем входных данных заранее не известен. В общем случае скорость работы компрессора (содержащего прямое, «сжимающее» преобразование) равна скорости декомпрессора (реализующего обратное, «разжимающее» преобразование) и зависит только от объема исходных данных. При этом нет необходимости в больших объемах буферной памяти. К таким методам относятся: гамма-коды Элиаса, коды Хаффмана, коды Голомба, Фибоначчи и т.д. Эти коды были запрограммированы на кодирование и декодирование на языке программирования DELPHI.

Анализ показывает, что для значений ошибки (<0.05) и коэффициента сжатия (3..4) целесообразно кодировать сигналы ЭКГ кодами Левенштейна и Фибоначчи. Близки к ним по эффективности коды Голомба с параметром m=3. Оптимальное число отброшенных коэффициентов составляет порядка 25% от длины блока. Длину блока нецелесообразно выбирать как слишком малую (8..16), так и слишком большую (128). Оптимальной длиной блока представляется значение 32..64.

Для программных средств был приведен экономический расчет, а также были рассмотрены вопросы охраны труда и окружающей среды.

арифметическое кодирование алгоритм

СПИСОК ИСТОЧНИКОВ ИНФОРМАЦИИ

1. Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия данных. -- М.: ДИАЛОГ-МИФИ, 2002.

2. Fenwick P., Punctured Elias Codes for variable-length coding of the integers, Technical Report 137, December 5, 1996.

3. Воробъев Н.Н. Числа Фибоначчи.- М.:Наука, 1987.-144с.

4. Кодирование информации (двоичные коды)/Березюк Н.Т. и др.-Харьков:Выща школа, 1987.-252с.

5. Экстремальное программирование. - СПб.:Питер, 2002.-224с.:ил.

6. Д. Кнут, «Искусство программирования для ЭВМ» т.1 «Основные алгоритмы» -- М.: «Мир», 1976.

7. Архангельский А.Я. Программирование в Delphi 6. - М.: ЗАО «Издательство Бином», 2002 г. - 1120 с.: ил.

8. Архангельский А.Я. Программирование в Delphi 7. - М.: ЗАО «Бином», 2004 г. - 1150 с.

9. Трахтенброт Б.А. Тьюринговы вычисления с логарифмическим замедлением, Алгебра и логика 3, вып.4, 1964, 33-48.

10. Окулов С.М. Программирование в алгоритмах. - М.: Бином. Лаборатория знаний, 2004. - 341 с.: ил.

11. Берс Л. Математический анализ Т. II. Перевод с англ. Л.И. Головкиной. Учеб. пособие для втузов, М., “Высш. школа”, 1975, 544 с. с ил.

12. Закон України «Про охорону праці»,листопад 2002 р.

13. Санитарные нормы проектирования промышленных предприятий. СН 245-Н-М.:Стройиздат,1972.-96с.

14. Долин П.А. «Справочник по технике безопасности». -Энергоатомиздат, 1984-824с.

15. НАПБ Б 07.005-86. Определение категорий помещений и зданий по взрывопожарной и пожарной опасности. -Действует с 01.01.87.

16. ГОСТ 12.1.004-91 ССБТ. Пожарная безопасность. Общие требования.-Введ.01.07.92.

17. ДНАОП 0.01-1.01-95 «Правила пожежної безпеки в Україні.-Дії з 22.06.95

18. ДБН В.1.1-7-2002 «Пожежна безпека об'єктів будівництва.-Діє з 01.01.03

19. «Правила устройства электроустановок».Энергоатомиздат,1987.

20. ГОСТ 12.0.003-74 ССВБТ. Опасные и вредные производственные факторы. Классификация.-Введ.01.01.76

21. Жидецький В.Ц. «Охорона праці користувачів комп'ютерів».-Львів:Афіша,2000.-176 с.

22. ГОСТ 12.1.005-88 ССБТ. Общие санитарно-гигиенические требования к воздуху рабочей зоны.-Введ.01.01.89.

23. ДНАОП 0.03-3.06-80. Санітарно-гігієнічні норми допустимих рівнів іонізації повітря виробничих та громадських приміщєнь. - Діє з 01.01.81.

24. СНиП 2.04.05-92 Нормы проектирования. Отопление, вентиляция и кондиционирование воздуха. - М.:Стройиздат,1992г.

25. ДБН В.2.5-28-2006.Інженерне обладнання будівель та споруд. Природне і штучне освітлення. - К.:Мінбуд Укр.,2006.

26. ГОСТ 12.1.003-83*.ССБТ. Шум. Общие требования безопасности.-Введ.01.07.1989.

27. НРБУ-97. Норми радіаційної безпеки України.-Київ,1997.

28. ДСан ПіН 3.3.2-0.07-98.Державні санітарні правила і норми роботи з візуальними дісплеями і терміналами електронно-обчислювальних машин.-Київ,1998.

29. ГОСТ 12.1.045-84.ССБТ.Электростатические поля. Допустимые уровни на рабочих местах и требования к проведению контроля. -Введен 01.01.86

30. ГОСТ 12.1.038-82.ССБТ.Электробезопасность. Предельно допустимые значения напряжения прикосновения и токов. -Введен 01.01.88.

ГОСТ 12.2.007.0-75*. Изделия электротехнические. Общие требования безопасности. -Введен 01.01.76

31. НПАОП 0.00-1.31-99. Правила охорони праці при експлуатації електронно-обчислювальних машин.-Діє з 01.01.00.

32. СНиП 11-4-79/80. Естественное и искусственное освещение. Нормы проектирования.- М.: Стройиздат,1980-110с.

ПРИЛОЖЕНИЕ А

Листинг программы кодирования-декодирования

unit Coding;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Math, Golomb;

const

CODING_TABLE_MAX = 39;

FIB_MAX = 13;

FIB_MAX_LENGTH = 377;

GLOMB_M_INFO = 'Golomb param M is ';

ALPHABETSIZE = 256;

Err_str_NotSuchMeth = 'Can''t choose coding method';

Err_str_WrongSymbols = 'Wrong symbol!! Input integer number or small latin letter';

type

Huffman = class

weights:array[0..ALPHABETSIZE] of integer;

public code:array[0..ALPHABETSIZE]of string;

private function getLowestTree( used: integer):integer;

public procedure growTree (data:array of integer);

public procedure makeCode;

public function coder(data:array of integer):string;

public function decoder(data:String):string;

end;

Tree = class

public child0: Tree;

public child1: Tree;

public leaf:boolean;

public character:integer;

public weight: integer;

public constructor Create;overload;

public constructor Create( character:integer; weight:integer; leaf:boolean);overload;

public procedure traverse( code:String ; h:Huffman);

end;

TForm1 = class(TForm)

GroupBox1: TGroupBox;

ComboBox1: TComboBox;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Memo1: TMemo;

Label3: TLabel;

Button1: TButton;

Button2: TButton;

Edit2: TEdit;

Label4: TLabel;

Button3: TButton;

Label5: TLabel;

Label6: TLabel;

procedure FormCreate(Sender: TObject);

procedure ComboBox1Select(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

/////Our code table///

Code_table: array[0..CODING_TABLE_MAX]of char;// 0..9 - '0'..'9'

// 10..36 - 'a'..'z'

// 37 - ' '

// 38 - #13

// 39 - #10

Fib_arr:array [1..FIB_MAX]of integer; // array with Fib numbers

Golomb_M: integer;

Coding_meth: 0..5; // 0 - Fibonacci

// 1 - Haffman

// 2 - Unaring

Gtree : array[0..ALPHABETSIZE] of Tree;

Gf: textfile;

Gh: Huffman;

implementation

uses StrUtils;

{$R *.dfm}

/////////////////////////////////////////////////////////////////////////////

//////////////////////////Coding procedures /////////////////////////////////

procedure GenerateCode_table;

var i:integer;

begin

for i:=0 to 9 do

Code_table[i]:=chr(48+i);

for i:=10 to 36 do

Code_table[i]:=chr(87+i);

Code_table[37]:=' ';

Code_table[38]:=#13;

Code_table[39]:=#10;

end;

function CT_ord(c:char):integer;

var i:integer;

begin

result:=0;

for i:=0 to CODING_TABLE_MAX do

if (c=Code_table[i]) then begin

result:=i;

break;

end;

end;

//////////////////////////////Fibonacci//////////////////////////////////////

procedure GenerateFib(n:integer);

var i:integer;

begin

Fib_arr[1]:=1;

Fib_arr[2]:=2;

for i:=3 to n do

Fib_arr[i]:=Fib_arr[i-1]+Fib_arr[i-2];

end;

function FibCodingOne(one:integer):string;

var i,kol:integer;

one_temp:integer;

last:boolean;

begin

one_temp:=one;

kol:=0;

result:='';

for i:=1 to FIB_MAX_LENGTH do

result:=result+'$';

last:=true;

//search closest Fib number

while (one_temp>0) do

for i:=1 to FIB_MAX-1 do

if (one_temp>=Fib_arr[i])and(one_temp<Fib_arr[i+1])then

begin

result[i]:='1';

one_temp:=one_temp-Fib_arr[i];

if (last) then begin

result[i+1]:='1';

last:=false;

kol:=i+1;

end;

break;

end;

delete(result,kol+1,length(result)-kol);

for i:=1 to length(result) do

if (result[i]<>'1') then

result[i]:='0';

end;

procedure FibCoding(s_str:string);

var i:integer;

f:textfile;

begin

GenerateFib(FIB_MAX);

AssignFile(f,'FibCoding.txt');

rewrite(f);

for i:=1 to length(s_str) do

if s_str[i]<>'0' then

write(f,FibCodingOne(CT_ord(s_str[i])));

closefile(f);

end;

function FibOneDecoding(s_tmp:string):integer;

var i,kol:integer;

begin

kol:=0;

for i:=1 to length(s_tmp)-1 do

if (s_tmp[i]='1') then

kol:=kol+ Fib_arr[i];

result:=kol;

end;

function FibDecoding(name:string):string;

var

s_temp:string;

f:textfile;

c:char;

begin

assignfile(f,name);

reset(f);

s_temp:='';

while not(eof(f)) do

begin

read(f,c);

s_temp:=s_temp+c;

if (length(s_temp)>1) and (s_temp[length(s_temp)]='1') and (s_temp[length(s_temp)-1]='1') then

begin

result:=result+Code_table[FibOneDecoding(s_temp)];

s_temp:='';

end;

end;

closefile(f);

end;

/////////////////////////////////Elias Gamma/////////////////////////////////

function GetBinary(numb:integer):string;

var t,k:integer;

begin

t:=numb;

result:='';

while (t>1) do

begin

k:=t mod 2;

result:=result+inttostr(k);

t:=t div 2;

end;

result:=result+inttostr(t);

result:=ReverseString(result);

end;

function BinToInt(bin:string):integer;

var i:integer;

t_bin:string;

begin

result:=0;

t_bin:=ReverseString(bin);

for i:=1 to length(t_bin) do

if (t_bin[i]='1')then

result:=result+strtoint(floattostr(power(2,i-1)));

end;

function ElGammaCodingOne(one:integer):string;

var kol,temp,i:integer;

bin:string;

begin

temp:=one;

kol:=0;

while (temp>0)do

begin

temp:=temp div 2;

kol:=kol+1;

end;

kol:=kol-1;

result:='';

for i:=1 to kol do

result:=result+'0';

bin:=GetBinary(one mod strtoint(floattostr((power(2,kol)))));

result:=result+'1';

for i:=1 to kol-length(bin) do

result:=result+'0';

if one>1 then

result:=result+bin;

end;

procedure ElGammaCoding(s_str:string);

var i:integer;

f:textfile;

begin

AssignFile(f,'GammaElias.txt');

rewrite(f);

for i:=1 to length(s_str) do

if s_str[i]<>'0' then

write(f,ElGammaCodingOne(CT_ord(s_str[i])));

closefile(f);

end;

function ElGammaDecoding(name:string):string;

var kol,i:integer;

s_temp:string;

f:textfile;

c:char;

begin

assignfile(f,name);

reset(f);

s_temp:='';

result:='';

while not(eof(f)) do

begin

kol:=0;

read(f,c);

while c<>'1' do

begin

read(f,c);

kol:=kol+1;

end;

s_temp:='';

for i:=1 to kol do

begin

read(f,c);

s_temp:=s_temp+c;

end;

result:=result+Code_table[BinToInt(s_temp)+strtoint(floattostr(power(2,kol)))];

end;

closefile(f);

end;

///////////////////////////////Elias delta///////////////////////////////////

function ElDeltaCodingOne(one:integer):string;

var kol,temp,i:integer;

bin:string;

begin

if one=1 then

begin

result:='1';

exit;

end;

temp:=one;

kol:=0;

while (temp>0)do

begin

temp:=temp div 2;

kol:=kol+1;

end;

result:=ElGammaCodingOne(kol);

bin:=GetBinary(one mod strtoint(floattostr((power(2,kol-1)))));

for i:=1 to kol-length(bin)-1 do

result:=result+'0';

if one>1 then

result:=result+bin;

end;

procedure ElDeltaCoding(s_str:string);

var i:integer;

f:textfile;

begin

AssignFile(f,'DeltaElias.txt');

rewrite(f);

for i:=1 to length(s_str) do

if s_str[i]<>'0' then

write(f,ElDeltaCodingOne(CT_ord(s_str[i])));

closefile(f);

end;

function ElDeltaDecoding(name:string):string;

var kol,i,pow:integer;

s_temp:string;

f:textfile;

c:char;

begin

assignfile(f,name);

reset(f);

s_temp:='';

result:='';

while not(eof(f)) do

begin

kol:=0;

read(f,c);

while c<>'1' do

begin

read(f,c);

kol:=kol+1;

end;

s_temp:='';

for i:=1 to kol do

begin

read(f,c);

s_temp:=s_temp+c;

end;

pow := BinToInt(s_temp)+strtoint(floattostr(power(2,kol)));

s_temp:='';

for i:=1 to pow-1 do

begin

read(f,c);

s_temp:=s_temp+c;

end;

result:=result+ Code_table[BinToInt(s_temp)+strtoint(floattostr(power(2,pow-1)))];

end;

closefile(f);

end;

///////////////////////////////////Golomb////////////////////////////////////

function UnaringCode(n:integer):string;

var i:integer;

begin

result:='';

for i:=1 to n do

result:=result+'1';

result:=result+'0';

end;

function GolombCodingOne(n:integer):string;

var q,r,b,cutoff,i:integer;

bin:string;

begin

q:= n div Golomb_M;

r:= n mod Golomb_M;

result:=UnaringCode(q);

b:= ceil(math.Log2(Golomb_M));

cutoff:=round(power(2,b))-Golomb_M;

if (r<cutoff) then

begin

bin:=GetBinary(r);

for i:=1 to (b-1)-length(bin) do

result:=result+'0';

result:=result+bin;

end

else

begin

bin:=GetBinary(r+cutoff);

for i:=1 to (b)-length(bin) do

result:=result+'0';

result:=result+bin;

end;

// Showmessage(result);

//skolko volka ne kormi vse ravno v les smotrit431

end;

procedure GolombCoding(s_str:string);

var i:integer;

f:textfile;

begin

AssignFile(f,'Golomb.txt');

rewrite(f);

writeln(f, GLOMB_M_INFO);

writeln(f, Golomb_M);

for i:=1 to length(s_str) do

if s_str[i]<>'0' then

write(f,GolombCodingOne(CT_ord(s_str[i])));

closefile(f);

end;

function GolombDecoding(name:string):string;

var kol,i,M,q,b,b1,b2,cutoff:integer;

s_temp:string;

f:textfile;

c:char;

begin

assignfile(f,name);

reset(f);

readln(f);

readln(f,M);

b:=ceil(math.Log2(M));

cutoff:=round(power(2,b))-M;

s_temp:='';

result:='';

read(f,c);

while not(eof(f)) do

begin

kol:=0;

while c<>'0' do

begin

read(f,c);

kol:=kol+1;

end; //q

q:=kol;

s_temp:='';

for i:=1 to b-1 do

begin

read(f,c);

s_temp:=s_temp+c;

end;

b1:=BinToInt(s_temp);

read(f,c);

s_temp:=s_temp+c;

b2:=BinToInt(s_temp);

if (b2<=cutoff)or(b2-cutoff>=M)or(b2-cutoff<=cutoff-1) then

begin

result:=result+Code_table[q*M+b1];

end

else

begin

result:=result+Code_table[q*M+b2-cutoff];

read(f,c);

end;

end;

closefile(f);

end;

/////////////////////////////Haffman/////////////////////////////////////////

constructor Tree.Create;

begin

end;

constructor Tree.Create( character:integer; weight:integer; leaf:boolean);

begin

self.leaf := leaf;

self.character := character;

self.weight := weight;

end;

procedure Tree.traverse(code:String; h:Huffman);

begin

if (leaf) then

begin

writeln(Gf, chr(character),' ',weight ,' ', code);

h.code[character] := code;

end;

if ( child0 <> nil) then child0.traverse(code + '0', h);

if ( child1 <> nil) then child1.traverse(code + '1', h);

end;

function Huffman.getLowestTree( used: integer):integer;

var min,i:integer;

begin

min:=0;

for i:=1 to used-1 do

if (Gtree[i].weight < Gtree[min].weight )then min := i;

result:= min;

end;

procedure Huffman.growTree( data:array of integer );

var i,used,c,w,min,weight0:integer ;

temp:Tree;

begin

for i:=0 to length(data)-1 do

weights[data[i]]:= weights[data[i]]+1;

used := 0;

for c:=0 to ALPHABETSIZE-1 do

begin

w := weights[c];

if (w <> 0)then begin

Gtree[used] := Tree.Create(c, w, true);

used:=used+1;

end;

end;

while (used > 1)do

begin

min := getLowestTree( used );

weight0 := Gtree[min].weight;

temp := Tree.Create;

temp.child0 := Gtree[min];

used:=used-1;

Gtree[min] := Gtree[used];

min := getLowestTree( used );

temp.child1 := Gtree[min];

temp.weight := weight0 + Gtree[min].weight;

Gtree[min] := temp;

end;

end;

procedure Huffman.makeCode;

begin

Gtree[0].traverse('', self);

end;

function Huffman.coder( data:array of integer ):string;

var str:string;

i:integer;

begin

str := '';

for i:=0 to length(data)-1 do

str :=str+ code[data[i]];

result:=str;

end;

function Huffman.decoder(data:String):string;

var str:string;

c:integer;

begin

str:='';

while(length(data) > 0)do

begin

for c:=0 to ALPHABETSIZE-1 do

begin

if (weights[c]>0)then

if (weights[c]>0) and (Pos(code[c],data)=1) then

begin

data:= copy(data,Length(code[c])+1,length(data));

str := str+chr(c);

end;

end;

end;

result:=str;

end;

procedure HuffmanCoding(s_str:string);

var i:integer;

f:textfile;

data:array of integer;

str:string;

begin

AssignFile(f,'Huffman.txt');

rewrite(f);

Gh:= Huffman.Create;

SetLength(data,length(s_str));

for i:=0 to length(data)-1 do

data[i]:= ord(s_str[i+1]);

Gh.growTree(data);

Gh.makeCode;

str:= Gh.coder(data);

write(f, str);

CloseFile(Gf);

closefile(f);

end;

function HuffmanDecoding(f_name:string):string;

var f: textfile;

s_temp:string;

c:char;

begin

AssignFile(f,f_name);

reset(f);

s_temp:='';

while not eof(f) do

begin

read(f,c);

s_temp:=s_temp+c;

end;

result:= Gh.decoder(s_temp);

closefile(f);

end;

/////////////////////////////////////////////////////////////////////////////

procedure DoCoding(code_id: integer);

begin

case code_id of

0: begin

FibCoding(Form1.Edit1.Text);

Form1.Memo1.Lines.LoadFromFile('FibCoding.txt');

// Showmessage('Size of code '+inttostr(length(Form1.Memo1.Lines.GetText)));

end;

1: // Elias Gamma

begin

ElGammaCoding(Form1.Edit1.Text);

Form1.Memo1.Lines.LoadFromFile('GammaElias.txt');

end;

2: // Ellias delta

begin

ElDeltaCoding(Form1.Edit1.Text);

Form1.Memo1.Lines.LoadFromFile('DeltaElias.txt');

end;

3: // Golomb

begin

Golomb.Form2.ShowModal;

Golomb_M:=Golomb.Form2.SpinEdit1.Value;

GolombCoding(Form1.Edit1.Text);

Form1.Memo1.Lines.LoadFromFile('Golomb.txt');

end;

4: // Huffman

begin

HuffmanCoding(Form1.Edit1.Text);

Form1.Memo1.Lines.LoadFromFile('Huffman.txt');

end;

5: ;

else

ShowMessage (Err_str_NotSuchMeth);

end;

Form1.Label6.Caption:=inttostr(length(Form1.Memo1.Lines.GetText));

end;

procedure DoDecoding(code_id: integer);

begin

case code_id of

0: begin

Form1.Edit2.Text:=FibDecoding('FibCoding.txt');

end;

1: begin

Form1.Edit2.Text:= ElGammaDecoding('GammaElias.txt');

end;

2: begin

Form1.Edit2.Text:=ElDeltaDecoding('DeltaElias.txt');

end;

3: begin

Form1.Edit2.Text:=GolombDecoding('Golomb.txt');

end;

4: begin

Form1.Edit2.Text:=HuffmanDecoding('Huffman.txt');

end;

5: ;

else

ShowMessage (Err_str_NotSuchMeth);

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Coding_meth:=0;

GenerateCode_table;

AssignFile(Gf,'HuffmanTemp.txt');

rewrite(Gf);

end;

procedure TForm1.ComboBox1Select(Sender: TObject);

begin

Coding_meth:=ComboBox1.ItemIndex;

//ShowMessage(inttostr(Coding_meth));

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not((Key in ['0'..'9'])or (Key in ['a'..'z'])or (Key in [' ',#13,#10])) then

begin

ShowMessage(Err_str_WrongSymbols);

Key:=#0;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

DoCoding(Coding_meth);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

DoDecoding(Coding_meth);

end;

procedure TForm1.Button3Click(Sender: TObject);

var i:integer;

begin

//Golomb_M:=8;

// for i:=1 to 10 do

// GolombCodingOne(42);

Showmessage(inttostr(CT_ord('v')));

end;

end.

Размещено на Allbest.ru


Подобные документы

  • Энтропия и количество информации. Комбинаторная, вероятностная и алгоритмическая оценка количества информации. Моделирование и кодирование. Некоторые алгоритмы сжатия данных. Алгоритм арифметического кодирования. Приращаемая передача и получение.

    курсовая работа [325,1 K], добавлен 28.07.2009

  • Описание метода сжатия информации на основе двоичных кодирующих деревьев Хаффмана. Среда разработки Delphi версии 7.0. Понятия объектно-ориентированного программирования. Программа, разработанная в Delphi. Реализация на Delphi метода кодирования Хаффмана.

    курсовая работа [2,1 M], добавлен 26.03.2013

  • Методы компрессии информации. Обзор и характеристика существующих методов сжатия информации, основанных на процедуре кодирования Хаффмена. Алгоритмы динамического кодирования методом FGK и Виттера. Программная реализация и руководство пользователя.

    курсовая работа [33,2 K], добавлен 09.03.2009

  • Понятие информации и основные принципы ее кодирования, используемые методы и приемы, инструментарий и задачи. Специфические особенности процессов кодирования цифровой и текстовой, графической и звуковой информации. Логические основы работы компьютера.

    курсовая работа [55,8 K], добавлен 23.04.2014

  • Анализ способов кодирования информации. Разработка устройства кодирования (кодера) информации методом Хемминга. Реализация кодера–декодера на базе ИМС К555ВЖ1. Разработка стенда контроля передаваемой информации, принципиальная схема устройства.

    дипломная работа [602,9 K], добавлен 30.08.2010

  • Определение понятий кода, кодирования и декодирования, виды, правила и задачи кодирования. Применение теорем Шеннона в теории связи. Классификация, параметры и построение помехоустойчивых кодов. Методы передачи кодов. Пример построения кода Шеннона.

    курсовая работа [212,6 K], добавлен 25.02.2009

  • Определение среднего количества информации. Зависимость между символами матрицы условных вероятностей. Кодирование методом Шеннона–Фано. Пропускная способность канала связи. Эффективность кодирования сообщений методом Д. Хаффмана, характеристика кода.

    контрольная работа [94,6 K], добавлен 04.05.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.