найти окно изображения 3х3 и заменить среднее значение центральным пикселем для всего изображения

Я просто хочу взять 3×3 соседнее окно изображения и заменить среднее значение центральным пикселем и вычислить среднее значение, дисперсию, энтропию, чтобы сделать вектор признаков в c ++. Opencv Я делаю что-то не так, пожалуйста, предложите мне эти функции для классификации.

cv::Mat ppa::find_win(cv::Mat wav, int win_size){     //

wav.convertTo(wav, CV_64F);                        // convert intto float
Mat varMap = Mat::zeros(wav.rows,wav.cols,wav.type());         // padding to avoid extra pixels
int border = ceil(win_size/2);                   // round off border
for(int i=border;i<=wav.rows-border-1;i++)
{
for(int j=border;j<=wav.cols-border-1;j++)
{
Rect win;
//      cout<<i<<" "<< j<<endl;
win.x = j-border; win.y = i-border;
win.width = win_size;win.height = win_size;
cv ::Mat window = wav(win);         // return the window of the

cv::Mat win1;
window.copyTo(win1);

cv:Scalar tempVal = mean(win1);
float myMAtMean = tempVal.val[0];
win1.at<double>(i,j) = myMAtMean;       /// replaced central pixel with mean value of neighbor pixel

//............................ calculate mean var of the  returned windows.......................................
cv::transpose(window,window);
window.convertTo(window, CV_64F);
arma::mat Ig_arma( reinterpret_cast<double*>(window.data), window.cols, window.rows );

arma::mat mn = arma::mean(Ig_arma);     //
arma::mat vr = var(Ig_arma);             // varience
double en = calculateEnergy(Ig_arma);    // energy
}
}
return win1;
}

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]