(int j=0; j<image1->Width; j++)
{pix=j;(int i=0; i<image1->Height; i++)
{
…[pix+i*bmpData->Stride]
…
}
}
Не смотря на то, что значения уровня цвета хранятся в одномерном массиве данных, используя вышеуказанный цикл и функцию bmpData->Stride (переход на пиксель стоящий "ниже") появляется возможность находить "битые пиксели", которые в случае присутствия их на снимке, представляются вертикальной или горизонтальной линией (последовательностью), либо одиночными пикселями.
В двойном цикле заданы условия, при выполнении которых программа собственно и определяет, является ли пиксель или последовательность пикселов битой.
(… &&msv [pix] <=POROG&& …)
{ … }
Пиксель будет считаться битым, если его значение уровня цвета меньше или равен 1 для черно-белого изображения, и меньше 4 для каждого из субпикселей для цветного. Данные критерии, полученные при анализе дефектного изображения, с большой точностью позволяют решать такого рода задачи. В прочем пользователь может сам задать значение критерия (по умолчанию 1 и 4 для черно-белого и цветного снимка соответственно).
После того, как алгоритм выявил в массиве данных все пиксели, удовлетворяющие условию, к ним применяется фильтр, который вычисляет новое значение "битого пикселя" и перезаписывает его. Расчет значения происходит посредствам фильтра "среднее", то есть берется среднее значение в окрестности восстанавливаемой точки и подставляет как новое значение. При этом существуют условия, которые не допускают, чтобы в расчет попал другой битый пиксель. Восстановление дефектных пикселей можно произвести 2 способами на выбор пользователя: по значениям 4 и 8 соседних пикселей. (Рис.5). При этом в случае, если какой-либо пиксель из окружения "битый", то его значение в расчет не берется.
Рис. 5. Восстановление битого пикселя по значениям 4 и 8 соседних пикселей
Для "битых пикселей", находящихся на краях изображения (на первом или последнем столбце или первой или последней строчке)
for (int j=0; j<image1->Width; j++)
{pix=j;(j==0&& j==image1->Width-1)
{(int i=0; i<image1->Height; i++)
{(i==image1->Height-1&&i==0)
{}
}
}
предусмотрены другие способы расчета нового значения. (Рис.6). Принцип восстановления значения уровня цвета практически не отличается от вышеуказанного способа, разница заключается лишь в том, что для вычисления среднего значения берутся другие пиксели в окрестности восстанавливаемой точки.
Рис. 6. Восстановление битого пикселя на границах изображения
Применим реализованный фильтр к дефектному изображению.
Рис. 7. Пример №1
Рис. 8. Пример №2
Рис. 9. Пример №3
Программное обеспечение, с восстанавливающим фильтром "среднее" хорошо справляется с поставленной задачей. На исходных изображениях присутствуют дефекты "битые пиксели" разного характера: одиночные, с вертикальной и горизонтальной направленностью, а так же полосы дефектных пикселей по всей ширине и высоте изображения. Как видно после фильтрации выходное изображение становится свободным от таких артефактов, поэтому поставленная цель считается достигнутой.
Заключение
В процессе выполнения курсовой работы были изучены основные постоянные свойства "битых пикселей": для черно-белого изображения значение уровня цвета таких пикселей 0-1, для цветного 0-4 для каждого из субпикселей. Помимо этого, был изучен принцип представления изображения в ЭВМ, рассмотрены основные функции, свойства, события.
Итогом курсовой работы является разработанная программа, которая рассчитана на восстановление "битых пикселей" присутствующих на изображении, посредствам фильтра "среднее". Реализованное программное обеспечение позволяет успешно справляться с проблемами такого рода: находит "битые пиксели" и восстанавливает их. Новое значение берется как среднее в окрестности восстанавливаемой точки.
Программ такого рода большое количество и разработчики постоянно их совершенствуют, это не панацея. Прогресс не стоит на месте и для устранения проблем восстановления "битых пикселей" специализированных программ мало, так как проблему необходимо искоренять на этапе создания матрицы: необходимо совершенствовать технологию производства матриц либо вводить инновационные идеи. Так уже в современных дорогих приборах встроен микропроцессор, который умеет определять битый пиксель, и меняет его на среднее из числа соседних, причем в 95% случаев мы и не догадывается о случившемся.
Список литературы
1. Астрономические новости NASA на русском языке. Новости космоса. - <http://www.astrogorizont.com>
. Мир фотографии - http://fotomir. ucoz.ru <http://fotomir.ucoz.ru>
3. MSDN Library дляVisual Studio 2008.
4. Пахомов Б.И. С/С++ и MS Visual C++ 2008 для начинающих. - СПб.: БХВ-Петербург, 2009. - 624с.
. Свободная энциклопедия - http://ru. wikipedia.org <http://ru.wikipedia.org>
. Хортон А. Visual C++ 2008. Базовый курс. - Москва: Диалектика, 2009. - 1280с.
. Шовенгердт Р. A. Дистанционное зондирование. Модели и методы обработки изображений. - Москва: Техносфера, 2010. - 560с.