基本概念
小概念
- 中值滤波
中值滤波本质上是一种统计排序滤波器。
假设像素点的表示为x(I,j),对于每一个像素点,其领域R(假设为8)的所有像素点g(x+k,y+k)值连带自身进行排序,假设然后将排序后中间的值定位g'(x,y),则将g'(x,y)的值替换掉x(I,j)的值。
优点及用途:
中值滤波所带来的模糊效应比较低,其典型应用就是消除图像的椒盐噪声。
- 相位和幅度
相位谱决定了图像结构,而图像中整体灰度分布的特性,如明暗,灰度变换趋势等则在比较大的程度上取决于对应的幅度谱,因为幅度谱反映了图像整体上各个方向的频率分量的相对强度。
- 灰度化
图像转为灰度可以使用以下的公式去处理:
$$ \begin{pmatrix} 0.114 & 0.587 & 0.229 \end{pmatrix} *\begin{pmatrix} R\\ G\\ B \end{pmatrix} $$
- 插值方法
使用插值可以实现图像的缩放,比如512512 -> 10241024
/* 最近邻插值 */
//implement with OpenCV
warpAffine(....)
Mat A = imread("E:\\te2.jpg", 1); // 此处为512*512
Mat B(780, 1024, CV_8UC3);
for (int i = 0; i < B.rows; i++)
{
for (int j = 0; j < B.cols; j++)
{
int posx = floor(j / (float)B.cols * (A.cols - 1) + 0.5f);
int posy = floor(i / (float)B.rows * (A.rows - 1) + 0.5f);
// cout << "Posx,y:(" << posx << "," << posy << ")"<<endl;
B.at<Vec3b>(i, j) = A.at<Vec3b>(posy, posx);
// B.at<Vec3b>(i, j)[1] = A.at<Vec3b>(posy, posx)[1];
// B.at<Vec3b>(i, j)[2] = A.at<Vec3b>(posy, posx)[2];
}
}
imshow("IMG", B);