图像增强
同学发给我一个高频电子书,我翻了两页后看到怀疑人生。(先上图)
这谁顶得住啊!看完我都要眼瞎了!于是我想到了骚操作——图像增强。
-
工具:matlab 、Mac系统的自动操作及预览
图像增强的概念
增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合。
有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。
图像增强的研究意义
图像增强处理是数字图像处理的一个重要分支。
很多由于场景条件的影响图像拍摄的视觉效果不佳,这就需要图像增强技术来改善人的视觉效果,比如突出图像中目标物体的某些特点、从数字图像中提取目标物的特征参数等等,这些都有利于对图像中目标的识别、跟踪和理解。图像增强处理主要内容是突出图像中感兴趣的部分,减弱或去除不需要的信息。这样使有用信息得到加强,从而得到一种更加实用的图像或者转换成一种更适合人或机器进行分析处理的图像。
图像增强的几种方法
图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。
在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。图像增强技术根据增强处理过程所在的空间不同,可分为基于空域的算法和基于频域的算法两大类。
空域法是对图像中的像素点进行操作,用公式描述如下:
g
(
x
,
y
)
=
f
(
x
,
y
)
∗
h
(
x
,
y
)
g(x,y)=f(x,y)*h(x,y)
g(x,y)=f(x,y)∗h(x,y)
其中是f(x,y)是原图像;h(x,y)为空间转换函数;g(x,y)表示进行处理后的图像。
基于空域的算法处理时直接对图像灰度级做运算,基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法。
基于空域的算法分为点运算算法和邻域去噪算法 。
-
点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。
-
邻域增强算法分为图像平滑和锐化两种。
平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。常用算法有均值滤波、中值滤波。
锐化的目的在于突出物体的边缘轮廓,便于目标识别。常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。
参考资料:百度百科-图像增强
图像增强的matlab代码
本次操作通过均值滤波消除图片模糊的表层,并且通过锐化增强图片中字体的质感。
不瞎逼逼,直接上代码
clear all;
clc;
file_path1 ='jpg/';
img_path_list1 = dir(strcat(file_path1,'*.jpeg'));
Len= length(img_path_list1); % 获取图像总数量 (三个图片文件夹中图片数量一致)
% for k=1:Len
% Img = imread([file_path1,'first',num2str(k),'.jpeg']);
% imshow(Img)
% end
importPath='/Users/cheunghonghui/Documents/MATLAB/test/image_enhancement/jpg/';%此处为需要处理图片的文件夹地址
exportPath='/Users/cheunghonghui/Documents/MATLAB/test/re_pdf/'; %此处为处理后输出的文件夹地址
nAmount=101; % 滤波半径
sigma=3; % 高斯滤波方差
threshold=0.04; % 低对比度mask阈值,可根据下面src的直方图调整
amount=20; % 文字增强的参数
for i = 1:Len
num = int2str(i);
% I=double(imread(importPath));
% I = double(imread('5.jpeg'));
% path = img_path_list1.folder{i};
aa = [importPath,num ,'.jpeg'];
I = double(imread(aa));
w1=fspecial('average',[nAmount,nAmount]); % 均值滤波
avg=imfilter(I,w1);
src=I./avg; % 利用均值滤波消除灰色区域
w2=fspecial('gaussian',[nAmount,nAmount],sigma); % 高斯滤波
imgBlurred=imfilter(src,w2);
lowContrastMask = abs(src-imgBlurred)<threshold; % 按阈值筛选低对比度区域
dst = src*(1+amount)+imgBlurred*(-amount); % 减去高斯滤波结果是一种锐化
dst = double(src.*lowContrastMask+dst.*(~lowContrastMask)); % 原代码中copyTo函数的实现
res = im2uint8(dst);
% imshow(res);
num_1 = int2str(i);
a = [exportPath,num_1,'.png'];
imwrite(res,a);
end
(上面的图像增强代码是在网上找的,加以修改变成本次工程的代码,年代久远,找不到出处,联权删)
图像增强实例的操作
操作思维:每次人工操作只能将一页的pdf转换成jpeg,面对577页的电子书文件,按照这种人工无脑式操作下来,我要枯了。于是我们要寻找一种解决重复无脑的转化pdf的操作过程。
操作流程:此刻需要吹爆mac的自动操作,matlab不能直接读取pdf文件,只能把pdf转化成jpeg文件来处理,这时候上网瞄了一眼其他的pdf转jpg的批量处理工具,要安装而且还要收费,好麻烦啊啊啊啊,所以用mac系统自带的自动操作来实现pdf批量转jpeg。
自动操作Apple的解释是这样的:

人工设置好各步进程(详细设置步骤请移步到这里),坐等一分钟,jpeg就好辽。
为防止代码翻车,我先用代码处理一张图片,看图像增强的效果。
效果:大大增强了图像的清晰度,字体轮廓明显。不足之处是字体存在虚化现象,可能与代码中的滤波参数设置有关。
上面已经成功对一张图片进行图像增强,修改matlab代码,让其对所有图片进行同样的操作,最后输出图像增强后的png图片。
打开导出图片的文件夹,全选所有图像增强后的png文件,通过mac系统的预览转换成pdf。
最后,
告别朦胧美 , 享受舒适。
爱护眼睛👁️,人人有责。