MiaoRain / lund

9 stars 2 forks source link

简历上内容 #27

Open MiaoRain opened 4 years ago

MiaoRain commented 4 years ago

硕士 2.2 喷雾图像处理

本实验主要利用阴影法对超临界喷雾特性进行探究,使用高速摄像机所拍摄喷雾图像后,需要进一步对图像进行参数化分析,从而获得常规的喷雾参数,包括喷雾贯穿距、喷雾投影面积、喷雾投影周长等。一般的商业软件无法完成喷雾的参数化,需要开发专门的处理软件。MATLAB软件是美国MathWorks公司开发的商业数学软件,为科学研究、工程设计等科学领域提供了一种全新的解决方案。因此为了快速、精准对喷雾图像进行处理和分析,本文基于MATLAB软件编写了对喷雾图像参数化的程序[63]。

1)软件编写思路

对于高速摄像机拍摄的喷雾发展图像,首先,需要在MATLAB软件中,读取喷雾图片,这包括了背景图片和喷雾图片的读取,然后通过MATLAB自带的函数进行图像的加减运算,计算出除去背景的喷雾图像,保存喷雾主体部分。然后,通过相应函数对已去背景图像进行灰度的处理。接着,需要提取喷雾图像的轮廓边界,进而为后续喷雾贯穿距的计算提供依据。此外,在本文还需要对喷雾投影面积进行参数分析,在外轮廓边界提取之后,进一步进行图像的填充,最后计算出喷雾的投影面积。

2)图像读取和背景处理

在本喷雾实验中,利用高速摄像机所拍摄的图像都是TIFF或PNG格式,可以利用MATLAB工具库中imread函数语句进行直接的处理。其调用格式具体如下:

A=imread(‘图像名称.tiff’)

其中A是对读入图像的命名,若图像是PNG格式,则上述中的TIFF要替换为PNG。在本实验中,要分别读取喷雾前的图像和喷雾中的图像,喷雾前的图像作为背景图像,喷雾发展中的图像则作为函数计算的图像。

在实际实验中,经常有各种干扰因素出现在高速摄像机所拍摄的喷雾图像中,例如定容弹石英玻璃的裂纹和燃油留下的污渍、喷雾发展过程中周围飞溅的杂质等。为了得到更高质量的喷雾图像,从而能精确的计算出喷雾贯穿距和投影面积等所需的参数信息,必须要除去这些干扰因素,需要对喷雾图像进行去背景的计算。在MATLAB软件中可以应用图像运算完成背景的去除,其调用格式如下:

B=A1-A2

其中,A1和A2分别是读入的喷雾中的图像和喷雾前的图像,B是对去背景后图像的新命名。从图2-6中通过对比去背景前后的图像,可以明显的观察到,通过去背景的处理可以有效的去除了图像中无关信息的干扰,清晰的展示出喷雾的整体形状与轮廓,从而为后续喷雾贯穿距和喷雾投影面积等参数的提取进一步提高了精确度。

image

(a)喷雾图像 (b) 去背景后图像

图2-6喷雾图像去背景前后对比

Fig. 2-6 Comparison of spray image with background and no background

3)图像显示和保存

在处理喷雾图片的过程中,为了检验图像的处理效果是否能满足后续的要求,需要及时把处理后的图像展示出来,例如去背景的喷雾图像和提取的喷雾边界图像需要显示出来,方便检查图片的处理质量。这个功能需要依靠MATLAB工具库中inshow函数语句来完成。

在整个图片处理过程中,若想保存有价值的图像,以方便日后的调阅,需要使用imwrite函数,其可以将已处理的图像以常用的图片形式进行存储。在MATLAB软件中,函数imwrite调用格式如下:

imwrite(C,‘name.format’)

其中,C是处理后的图片名称,name表示存储图片的新名称,format表示图片存储的格式如png和tiff等。

4)图像分割

为了更好地提取喷雾图像边缘,将喷雾图像转换成了灰度图像。灰度图像矩阵元素的取值范围通常为[0,255],“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大代表由黑色到白色的过渡。在MATLAB软件中,函数rgb2gray可以将喷雾图像转换为灰度图像,展示出喷雾亮度的分布。把喷雾图片转化为灰度图像之后,要对灰度图像进行分割。图像分割是把图片分割成若干个特定的、具有独特特点的区域,并把有意义的和目标的特征部分并按目标提取出来的技术,完成对图像进一步的识别和分析。在Matlab软件中图像处理过程中,图像分割法是一种常常运用的技术,而且图像分割的好坏直接影响着喷雾特性参数计算的准确度。到目前为止,已经开发出上千种图像分割方法,其中阈值分割法因其简单、稳定、计算量相对较小的优点在图像处理中被广泛应用。阈值分割法的核心思想是:先确定一个图像灰度值范围内的灰度阈值;然后再用图像中各个像素的灰度值与这个阈值相比较,判断结果分为两类,一类为像素灰度值大于阈值,另一类像素灰度值小于阈值(或等于阈值)。由此可以看出,阈值分割法的重点在于阈值的选取,阈值是否得当之间关系图像分割质量的好坏。

本文选取最佳阈值是利用基于逼近思想的迭代方法[64],基本步骤如下:

求出图像的最大灰度值和最小灰度值,分别记为Z0和Z1;

令初始全局阈值T0=aZ0+(1-a)Z1,利用T0将灰度图像的像素点分成两部分,灰度值大于T0的部分称为前景,灰度值小于T0的部分称为背景;

分别求出前景和背景的平均灰度值TA和TB,带入公式T1=aTA+(1-a)TB,用T1代替T0成为全局阈值;

重复以上过程,如此迭代,直至TK收敛,即TK+1=TK。

上述步骤中的a为0~1的常数,其大小根据图像分割的效果进行动态调节。将灰度小于TK的部分填充为白色,将灰度大于TK的部分填充为黑色,即把喷雾体轮廓初步填充为黑色。利用迭代最佳阈值法分割之后的喷雾图像如图2-7所示。

image

图2-7阈值分割后图像

Fig.2-7 Image after Threshold Segmentation

5)图像处理

得到了分割后的喷雾图像之后,为了进一步提取喷雾的边界,需要利用形态学函数对图像进行处理。形态学的基本运算有四个:膨胀、腐蚀、细化、提取。

膨胀和腐蚀:在图像进行分割处理中,喷雾边缘某一像素值可能不符合阈值设定的值,这往往导致分割后的喷雾边缘出现许多断点和断线,为获得更加精确的喷雾边缘,须对断裂的边缘进行补充。在MATLAB工具库中,可以利用函数imdilate和imerode完成对边缘进行膨胀和腐蚀的处理,本文中图像处理程序中选用了这两个函数。

细化和提取:喷雾边缘经过膨胀和腐蚀后,虽然可以处理出一个较完整的外轮廓,但是在图像的边缘会存在多像素堆叠的现象,导致图像边缘粗糙不均匀,影响对边缘参数的提取,这时需要利用函数bwmorph对边缘进行细化处理,去除堆积处多余的像素,提炼出由单层像素组成的边缘轮廓。

6)喷雾图像填充与面积计算

喷雾边缘提出后,需要利用MATLAB工具库中函数imfill把图像进行二值化处理,对喷雾边缘包括的图像进行填充,增加其亮度以加强与边缘外图像的分别,进一步方便函数bwarea对喷雾投影面积的相关计算。

7)喷雾锥角和贯穿距离计算

经过上述处理之后,还要进行喷雾始点位置和像素比的选定,然后可从对喷雾轮廓直接提取出喷雾贯穿距的相关参数。在本文中对喷雾贯穿距定义为:从喷油器喷口出来垂直向下到喷雾边缘的距离,如图2-8所示。

image

图2-8喷雾贯穿距

Fig.2-8 Spray penetration distance

MiaoRain commented 4 years ago

博士 a Photron Fastcam SA-X2 基于MATLAB的图像配准方法.pdf 畸形矫正 I=gridtest; J=fixedim; TForm=cp2tform(movingPoints,fixedPoints+50,'lwm');%TForm is a matrix B=imtransform(gridtest(:,:,1),TForm); save('Im_matrix.mat','movingPoints','fixedPoints') figure imagesc(B)

用corr来挑选single cycle

点火提取 Img_NL_gray=mat2gray(Img_NL); %Convert matrix to grayscale image Img_NL_bw=im2bw(Img_NL_gray,level) %Convert image to binary image, based on threshold s = regionprops(Img_NL_bw,'centroid','Area')

[index]=find(Area>=max(Area)); %find the index of the Max areas Area_max=max(Area); numb_centroid= size(centroids,1); %find number of ignition location

        if numb_centroid>=1&&Area_max<=4000&&Area_max>=1000;   %number of ignition location more than 1 and area less than 4000
            Area_max(i,j)=Area(index);   %The Max Area               
            Ignition_location(i,j) = sqrt((centroids(index,1)-center_point_x)^2 + (centroids(index,2) -center_point_y)^2)*mmeters_per_pixel;%distance between ignition location and center of^2 + (Y1 -Y2)

一圈一圈提取intensity %% Polar coordinate system

o_y =center_point_y; o_x =center_point_x; width=512; length=512; theta = zeros(width,length); r = zeros(width,length); for i = 1:width for j = 1:length r(i,j) = (((j-o_x)^2)+((i-o_y)^2))^0.5; if (o_y-i) >= 0 && (j-o_x) >= 0 theta(i,j) = asin((o_y-i)/r(i,j)); end if (o_y-i) >= 0 && (j-o_x) < 0 theta(i,j) = -asin((o_y-i)/r(i,j)) + pi; end if (o_y-i) < 0 && (j-o_x) < 0 theta(i,j) = asin((i-o_y)/r(i,j)) + pi; end if (o_y-i) < 0 && (j-o_x) >= 0 theta(i,j) = -asin((i-o_y)/r(i,j)) + 2pi; end end end %% N.L. intensity as a function of piston radius for k=1:num_images
disp(k) %% Read in images images(:,:,n)=fire3rd_calib(:,:,n); % Subtract background from image
% if n>=2 % images(:,:,n)=images(:,:,n)-images(:,:,1); % end images = double(images); % figure % imshow(images(:,:,n)) %% Create Circle Mask [rr cc] = meshgrid(1:512); C = sqrt((rr-241).^2+(cc-234).^2)<=217.5; image=images(:,:,n).
C;
figure imshow(image)
Raius_mmeter=1:45;
%% N.L. intensity as a function of piston radius
B=image;
for i = 1:width%512 for j = 1:length%512 for mmeters = start_mmeters:end_mmeters %from 1--45mm if r(i,j) <= pixel_per_mmetersmmeters && r(i,j) >= pixel_per_mmeters(mmeters-1) %Using Polar coordinate to redefine the image(i,j) intensity_sum(mmeters,k) = intensity_sum(mmeters,k) + B(i,j); n_mmeters(mmeters,k) = n_mmeters(mmeters,k) + 1;%numb of image

         end
         intensity_ave_mmeter(mmeters,k)=intensity_sum(mmeters,k)/n_mmeters(mmeters,k);

     end
 end

end

MiaoRain commented 4 years ago

Chapter9-形态学图像处理.pdf

MiaoRain commented 4 years ago

image

MiaoRain commented 4 years ago

基于深度学习的人脸识别技术综述 https://zhuanlan.zhihu.com/p/24816781

MiaoRain commented 4 years ago

边缘检测:Canny算子,Sobel算子,Laplace算子 https://www.cnblogs.com/zhuifeng-mayi/p/9563947.html https://edu.csdn.net/course/play/10552/234931

MiaoRain commented 4 years ago

图像金字塔 SIFT 检测器 https://www.youtube.com/watch?v=xfzzVl9U6mI&list=PLCgyLHxpVUQ2yc0Le9_rtwA5SQIOXhFbr&index=16&t=0s&app=desktop https://blog.csdn.net/abcjennifer/article/details/7639681?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158879241019195265949641%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=158879241019195265949641&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v25-3

特征点检测-SIFT https://zhuanlan.zhihu.com/p/90122194

image

MiaoRain commented 4 years ago

HOG检测器 histogram of oriented gradient 方向梯度直方图 https://zhuanlan.zhihu.com/p/33059421 DPM https://zhuanlan.zhihu.com/p/41508881

MiaoRain commented 4 years ago

HOG + SVM 代码 https://www.kaggle.com/miaorain/hog-svm-pedestran-detect-python/