- 论坛徽章:
- 0
|
由于需要,我现在正在学习C++,我有个程序,到现在都没有弄明白。请大家指点下.
falsepixels是一个二维的文本文件 (512,512),只含有1和0. 如果是1的话,就 对相应的img数据使用均值滤波
img是一个数据文本文件。
程序目的是去除img中一些噪点。- #define FFT2 fft<2, double, complex<double> >
- void fixFalsePixels(FFT2 &img, FFT2 &falsePixels) {
- Vector<int,2> i;
- FFT2 tfp(falsePixels);
- for (bool again = true; again == true; ) {
- again = false;
- for (Vector<int,2> i=0; i[0]<512; ++i[0])
- for (i[1]=0; i[1]<512; ++i[1]) {
- int n=0;
- if (tfp.r[i] != 0) {
- if ((i[0] > 0) && (tfp.r[i - Vector<int,2> (1,0)] == 0)) {
- ++n;
- img.r[i] = img.r[i - Vector<int,2> (1,0)];
- }
- if ((i[0] < 511) && (tfp.r[i + Vector<int,2> (1,0)] == 0)) {
- if (++n == 1)
- img.r[i] = img.r[i + Vector<int,2> (1,0)];
- else
- img.r[i] += img.r[i + Vector<int,2> (1,0)];
- }
- if ((i[1] > 0) && (tfp.r[i - Vector<int,2> (0,1)] == 0)) {
- if (++n == 1)
- img.r[i] = img.r[i - Vector<int,2> (0,1)];
- else
- img.r[i] += img.r[i - Vector<int,2> (0,1)];
- }
- if ((i[1] < 511) && (tfp.r[i + Vector<int,2> (0,1)] == 0)) {
- if (++n == 1)
- img.r[i] = img.r[i + Vector<int,2> (0,1)];
- else
- img.r[i] += img.r[i + Vector<int,2> (0,1)];
- }
- if (n == 0)
- again = true;
- else {
- img.r[i] /= n;
- tfp.r[i] = 0;
- }
- }
- }
- }
- }
复制代码 我现在就不明白,这个vector <int, 2> (1,0)是什么意思?就是一个2维的int型的vector, 但是这个(1,0)是什么意思?
除此之外,我还像编写一个程序在img检测这些噪点,但我不知道如何做。这些噪点的值是11810, 可是img中心位置,也有一些点的值是11810,是有用的信息。我不知道有什么比较好的算法来解决这个问题。 |
|