반응형
for (j = firstout; j < h - firstout; j++)
for (i = firstout; i < w - firstout; i++)
{
tempr = tempg = tempb = 0;
for (j_1 = j - firstin; j_1 < j + lastin; j_1++)
for (i_1 = i - firstin; i_1 < i + lastin; i_1++)
{
tempr += (1 * ptr1[j_1][i_1].r);
tempg += (1 * ptr1[j_1][i_1].g);
tempb += (1 * ptr1[j_1][i_1].b);
}
// 255를 넘어갈경우 넘기지 않고 255로 고정
ptr2[j][i].r = (BYTE)limit(tempr / value + 0.5);
ptr2[j][i].g = (BYTE)limit(tempg / value + 0.5);
ptr2[j][i].b = (BYTE)limit(tempb / value + 0.5);
}
for (j = firstout; j < h - firstout; j++)
for (i = firstout; i < w - firstout; i++)
{
ptr1[j][i].r = ptr2[j][i].r;
ptr1[j][i].g = ptr2[j][i].g;
ptr1[j][i].b = ptr2[j][i].b;
}
for (i = firstout; i < w - firstout; i++)
{
tempr = tempg = tempb = 0;
for (j_1 = j - firstin; j_1 < j + lastin; j_1++)
for (i_1 = i - firstin; i_1 < i + lastin; i_1++)
{
tempr += (1 * ptr1[j_1][i_1].r);
tempg += (1 * ptr1[j_1][i_1].g);
tempb += (1 * ptr1[j_1][i_1].b);
}
// 255를 넘어갈경우 넘기지 않고 255로 고정
ptr2[j][i].r = (BYTE)limit(tempr / value + 0.5);
ptr2[j][i].g = (BYTE)limit(tempg / value + 0.5);
ptr2[j][i].b = (BYTE)limit(tempb / value + 0.5);
}
for (j = firstout; j < h - firstout; j++)
for (i = firstout; i < w - firstout; i++)
{
ptr1[j][i].r = ptr2[j][i].r;
ptr1[j][i].g = ptr2[j][i].g;
ptr1[j][i].b = ptr2[j][i].b;
}
평균값 필터에 의해 만들어지는 결과는 원본 영상보다 영상이 흐려지는 즉 , 날카로운 영상이 아니라 부드러운 영상이 나오게 된다. 그로인하여 높은 평균값 필터를 적용할 경우에 영상의 초점이 흐려 질 수 있다.
반응형
'프로그래밍 > c++ /영상처리' 카테고리의 다른 글
영상이동 (0) | 2015.10.02 |
---|---|
Median Filter (0) | 2015.10.01 |
OnLButtonDown (0) | 2015.09.21 |
Member initializer (0) | 2015.09.19 |
감마 보정 (0) | 2015.09.17 |