Median filter.
BOOL MedianFilter( int nWindowSize, int nPaddingOption = MFILTER_ZEROPADDINGWINDOW )
Returns TRUE on success and FALSE on failure.
EX1
void matrixbase_MedianFilter_ex1() { matrix<double> mat1 = { {1, 2, 3, 4}, {2, 4, 6, 8}, {5, 10, 15, 20} }; int rc = mat1.MedianFilter(4); if(!rc) printf("Error: MedianFilter on a matrix failed."); else{ printf("The matrix is:\n"); for(int ii=0; ii< mat1.GetNumRows(); ii++){ for(int jj=0; jj< mat1.GetNumCols(); jj++) printf("%g ", mat1[ii][jj]); printf("\r\n"); } } }
EX2
void matrixbase_MedianFilter_ex2() { matrix<double> mat1 = { {1, 2, 3, 4}, {2, 4, 6, 8}, {5, 10, 15, 20} }; MatrixPage MatPg1; MatPg1.Create("Origin"); MatrixLayer MatLy1 = MatPg1.Layers(0); Matrix Mat1(MatLy1); Mat1 = mat1; MatrixPage MatPg2; MatPg2.Create("Origin"); MatrixLayer MatLy2 = MatPg2.Layers(0); Matrix Mat2(MatLy2); Mat2 = mat1; int rc = Mat2.MedianFilter(3); // default is MFILTER_ZEROPADDINGWINDOW if(!rc) printf("Error: MedianFilter on a matrix failed. (Option:ZEROPADDINGWINDOW (default))\n"); else printf("Observe the MedianFiltered matrix window %s from %s. (Option:ZEROPADDINGWINDOW (default))\n", Mat2.GetName(),Mat1.GetName()); MatrixPage MatPg3; MatPg3.Create("Origin"); MatrixLayer MatLy3 = MatPg3.Layers(0); Matrix Mat3(MatLy3); Mat3 = mat1; rc = Mat3.MedianFilter(3,MFILTER_MAPPADDINGWINDOW ); if(!rc) printf("Error: MedianFilter on a matrix failed. (Option:MAPPADDINGWINDOW)\n"); else printf("Observe the MedianFiltered matrix window %s from %s. (Option:MAPPADDINGWINDOW)\n", Mat3.GetName(),Mat1.GetName()); MatrixPage MatPg4; MatPg4.Create("Origin"); MatrixLayer MatLy4 = MatPg4.Layers(0); Matrix Mat4(MatLy4); Mat4 = mat1; rc = Mat4.MedianFilter(3,MFILTER_REPEATEDGEPADDINGWINDOW ); if(!rc) printf("Error: MedianFilter on a matrix failed. (Option:REPEATEDGEPADDINGWINDOW)\n"); else printf("Observe the MedianFiltered matrix window %s from %s. (Option:REPEATEDGEPADDINGWINDOW)\n", Mat4.GetName(),Mat1.GetName()); }
MedianFilter examines the N x N pixels centered around each pixel of an image (matrix).It finds the median value of the N x N pixels, and then replaces the central pixel with the median value. It is a useful filter to remove spot noise (white spots, black spots) in an image because such noisy pixels have values way off the median value.
origin.h