https://www.jstage.jst.go.jp/article/itej/62/8/62_8_1268/_pdf
の1ページ目の右上がフィルターの式ということで、ある画像を中心に+/-pだけの範囲の画素の空間距離と画素の距離(モノクロなた単純な画素値の差、RGBならRGB空間上での色の座標の差を表すベクトルを使うんでしょうか・・・)をこの式のとおりに+/-pの画素について計算式のとおりに累積すると結果が出てくるという感じだと思います。式そのものは(二次元の座標を想定すれば)x, yそれぞれの座標を二重ループしながら特定の画素の周りの(2p+1)^2個のピクセルについて計算・累積するようなプログラムになり、それを画像全体に対して施す感じ(まんま実装すると4重ループ)となる感じだと思います。
おそらく式そのものはよいとして、画素の差として何を用いるかが「?」なのではないでしょうか?そこは自身ないのですが、RGBだと前述したとおり、3次元空間上のベクトル(r, g, b)としてやってみたらうまくいくような気がします(やったことないので想像で言ってます・・・)
しかし、自分で実装するのは面倒なものです。下記ページを見るとOpenCVにbilateralFilter
というのが実装されているようなのでそのまんま利用するのが簡単ではないかと思います。
https://qiita.com/shim0mura/items/f222082b7ef08de3732e
このページはPythonの例ですが、Javaでも同様の機能が使えるでしょうし、面倒ならProcessingのPythonバージョンを使ってみればよいかも知れません。
(訂正: ProcessingのPythonバージョンは標準のPythonではなくJythonであることを失念してました!JythonはJVMベースのPython実装ですけど、現在リリースされているのはPython 2.7まででしかなく、Python 3.X相当のバージョンは正式にリリースされてません。実際ProcessingのPythonバージョンも2.7相当のものですし、そもそもPythonの非標準モジュールを簡単にimportできるとは言えません。Processingの標準機能の範囲内でPythonモードを使うならよいのですが、OpenCVのようなものを導入しようとするとき、ProcessingのPythonモードはよいアプローチではないと思いましたので、訂正いたします!失礼いたしました。)