今天在写论文的时候需要插一些电路图,电路原理图采用AltiumDesigner软件绘制,绘制完成后截图再保存为''.png''格式的图片插入word中,然而我发现插到word中后,图片的背景不是纯白,并且元器件的填充色不是白色,这样不太清晰。如下图所示:
在红色框内,可以看到图片的背景不是word文档的纯白色。这样子的插图不规范,并且也不符合我强迫症的习惯。因此,我从网上查找解决的办法,有人说可以使用PhotoShop软件的魔术棒功能,将背景设置为透明,苦于我的笔记本没有安装ps,而且我也从未用过ps软件,所以这个方法不可行。
我转而一想,虽然不会用PS,但是我学过Matlab和图像处理,PS能干的事Matlab应该也能做到。而Matlab是理工男的必备软件,常规语法和函数我也熟烂于心,用Matlab做这件事应该比我重新学习PS要来的快。我的思路是:将图片中像素值比较浅的全部设置为白色,比较深的直接设置为纯黑,阈值的选取可以通过直方图来找。程序如下:
%time2019.09.22 22;00
%Auther:HuaSir
clear all;clc;
x = imread('1.png');%读入图片
subplot(2,2,1);
imshow(x);title('真彩色图');
y = rgb2gray(x);%彩色图转化为灰度图
[m,n] = size(y);%获取图片大小
finalPicture = zeros(m,n);%新建一个矩阵用于存储最终图片
subplot(2,2,2);
imshow(y);title('灰度图');
subplot(2,2,3);
imhist(y);title('直方图');%灰度的直方图
%循环遍历灰度图,将像素值比较小颜色浅的一概认为是纯白色
for i=1:m
for j = 1:n
if y(i,j)<220
finalPicture(i,j)=0;
else
finalPicture(i,j)=255;
end
end
end
subplot(2,2,4);
imshow(finalPicture);title('最终结果');
imwrite(finalPicture,'2.png');
以下为输出结果:
在灰度直方图中有两个峰值,一个是白色,一个是灰色(因为第一幅图片-真彩色图中,像素点最多的是背景中的白色,以及电路元件内部填充的灰色),经过处理之后,整个元件的边框与引脚为黑色,背景为纯白色,完美的解决了上述问题。如下面两幅图,经过处理后的图片变得黑白分明,这样的电路图插入到论文中清晰可见,也更为规范。这只是一个初步的程序,程序中生产新矩阵的代码是通过循环遍历的,这个操作稍显笨拙,后续改进可以采用find()函数或者其他的矩阵处理函数,另外,有些待图片可能会有噪声点,后续可以增加降噪的代码,解决这个问题。以后再遇到Word插图的问题,可以采用这个办法。