Дипломная работа: Разработка программного обеспечения для фильтрации растровых изображений

int y_finish=m_rangY;

if(y+dy>m_pSourceBM->GetBMHeight())

y_finish-=(y+dy-m_pSourceBM->GetBMHeight());

// Расчёт новых значений цвета пиксела с учётом соседей, попавших в зону //действия матрицы преобразования

int NewBGR[3];

int count=0;

for(int c=0, mx=0, my=0; c<3; c++)

{NewBGR[c]=0; count=0;

for(my=y_start; my<y_finish; my++)

for(mx=x_start; mx<x_finish; mx++)

{if((pSPix=m_pSourceBM->GetPixPtr(x+(mx-dx), y+(my-dy)))!=NULL)

{NewBGR[c]+=(m_pMatrix[my*m_rangX+mx]*(*(pSPix+c)));

count+=m_pMatrix[my*m_rangX+mx]; }}}

// Адрес пиксела в изображении-приёмнике

pDPix=m_pDestBM->GetPixPtr(x, y);

//Установка нового значения в приёмное изображение

for(c=0; c<3; c++)

{

// Приведение значения к допустимому диапазону

if(count!=0)

NewBGR[c]=NewBGR[c]/count;

if(NewBGR[c]<0)

NewBGR[c]=0;

else if(NewBGR[c]>255)

NewBGR[c]=255;

*(pDPix+c)=NewBGR[c]; }

return TRUE; };

В методе CmatrixFilter:: TransformPix() сначала определяется область перекрытия изображения и матрицы преобразования. Этот шаг необходим в связи с тем, что на границах изображения пиксел может не иметь соседей.

Новое значение пиксела формируется с учетом значений всех пикселов и коэффициентов матрицы преобразования, попавших в область перекрытия изображения и матрицы преобразования.

К-во Просмотров: 379
Бесплатно скачать Дипломная работа: Разработка программного обеспечения для фильтрации растровых изображений