縦方向平滑化フィルタでやっていることを横にしただけです.横方向にブレた様な効果を出すことができます.
式を見ても分かるように注目しているピクセルの1行だけで平均をとっています.
for(i=1; i<img->height-1; i++){ for(j=1; j<img->width-1; j++){ sumr = sumg = sumb = 0; for(k=-1; k<=1; k++){ for(l=-1; l<=1; l++){ weight = 0; if(!k)weight = 1; sumr += weight * img->data[(i+k)*img->width + j + l].r; sumg += weight * img->data[(i+k)*img->width + j + l].g; sumb += weight * img->data[(i+k)*img->width + j + l].b; } } temp->data[i*temp->width + j].r = sumr/3; temp->data[i*temp->width + j].g = sumg/3; temp->data[i*temp->width + j].b = sumb/3; } }
平均化する範囲が小さいため画像に1回フィルタをかけたぐらいではあまり大きな変化は見られませんが,複数回フィルタにかけたりフィルタの範囲を大きくすれば変化が大きくなって面白いと思います.