OpenCV图像处理

时间:2013-01-20 07:35:18

标签: image-processing opencv

我有一个我想要放大的图像并以高细节查看。它的大小不明,大多是黑白的,上面有一些文字。当我放大文本变得不可读时,我认为没有足够的像素/纹素显示,所以我将图像放大了2倍。现在我缩放了它,它仍然是不可读的。

然后我开始使用OpenCV:

void resizeFirst(){
  Mat src = imread( "../floor.png", 1 );
  Mat tmp;
  resize(src,tmp,Size(),3,3,INTER_CUBIC);
  Mat dst = tmp.clone();
  Size s(3,3);
  //blur( tmp, dst, s, Point(-1,-1) );//homogeneous
  GaussianBlur(tmp, dst, s, 3);//gaussian
  //medianBlur ( tmp, dst, 5 );//median
  //bilateralFilter ( tmp, dst, 5, 5*2, 5/2 );
  addWeighted(tmp, 1.5, dst, -0.5, 0, dst);
  imwrite("sharpenedImage.png",dst);
}

void blurFirst(){
  Mat src = imread( "../floor.png", 1 );
  Size s(3,3);
  Mat dst;
  GaussianBlur(src, dst, s, 3);//gaussian
  addWeighted(src, 2, dst, -1, 0, dst);
  Mat tmp;
  resize(dst,tmp,Size(),3,3,INTER_CUBIC);
  imwrite("sharpenedImage0.png",tmp);
}

并且输出更好但图像仍然不清晰。有没有人对如何在放大图像时保持文字清晰有任何想法?

编辑:下面是样本图片。

Original Image

Enhanced Image

第一个是较小的res原件,第二个是我调整大小并尝试按照下面的高斯锐化

1 个答案:

答案 0 :(得分:2)

调整大小功能提供不同的插值方法

INTER_NEAREST nearest-neighbor interpolation
INTER_LINEAR bilinear interpolation (used by default)
INTER_AREA resampling using pixel area relation. It may be the preferred method for image decimation, as it gives moire-free results. But when the image is zoomed, it is similar to the INTER_NEAREST method
INTER_CUBIC bicubic interpolation over 4x4 pixel neighborhood
INTER_LANCZOS4 Lanczos interpolation over 8x8 pixel neighborhood

尝试所有插值方法并使用最适合您的方法。然而,调整大小功能会改变图像的宽高比。