# <Br/> include "highgui. H "<br/> # include <stdio. h> <br/> # include "CV. H "<br/> # include" cxcore. H "<br/> # include <math. h> </P> <p> void main (INT argc, char ** argv) <br/> {<br/> iplimage * m_image = cvloadimage ("E: // desktop // 111.jpg"); <br/> int W = m_image-> width; <br/> int H = m_image-> height; </P> <p> iplimage * m_ba = cvcreateimage (cvsize (W, h), ipl_depth_8u, 3); </P> <p> for (INT I = 1; I <p-1; I ++) <br/> for (Int J = 1; j <W-1; j ++) <br/>{</P> <p> cvscalar CS [9]; <br/> cvscalar CSS; <br/> cvscalar cc = cvget2d (m_image, I, j); <br/> int A = 0; <br/> double sum = 0; <br/> double C [9], s [9]; </P> <p> for (int K = I-1; k <I + 2; k + +) <br/> for (INT q = J-1; q <j + 2; q ++) <br/>{< br/> CS [a] = cvget2d (m_image, K, q ); <br/> C [a] = exp (-(POW (k-I, 2) + POW (Q-J, 2)/200 )); <br/> S [a] = exp (-(POW (CS [A]. val [0]-CC. val [0]), 2) + POW (CS [A]. val [1]-CC. val [1]), 2) + POW (CS [A]. val [2]-CC. val [2]), 2)/200); </P> <p> A ++; </P> <p >}< br/> for (INT y = 0; y <9; y ++) <br/>{< br/> sum = sum + C [y] * s [y]; <br/>}</P> <p> for (INT x = 0; x <9; X ++) <br/>{< br/> CSS. val [0] + = (C [x] * s [x] * (CS [X]. val [0])/SUM; <br/> CSS. val [1] + = (C [x] * s [x] * (CS [X]. val [1])/SUM; <br/> CSS. val [2] + = (C [x] * s [x] * (CS [X]. val [2])/SUM; </P> <p >}</P> <p> cvset2d (m_ba, I, j, CSS ); </P> <p >}</P> <p> cvnamedwindow ("Source", 1); <br/> cvshowimage ("Source", m_image ); </P> <p> cvnamedwindow ("Bilateral filtering", 1); <br/> cvshowimage ("Bilateral filtering", m_ba ); </P> <p> cvwaitkey (0); </P> <p>}