2

我有一张图像,我想放大并以高细节查看。它的大小未知,大部分是黑白的,上面有一些文字。当我放大文本变得不可读时,我认为这是因为没有足够的像素/纹素来显示,所以我将图像放大了 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);
}

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

编辑:下面是示例图像。

原始图像

增强图像

第一个是较小的原始分辨率,第二个是我调整大小并尝试按照以下方式进行高斯锐化

4

1 回答 1

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

尝试所有插值方法并使用最适合您的一种。但是,调整大小功能会改变图像的纵横比。

于 2013-01-20T08:42:18.777 回答