花园分享 http://blog.sciencenet.cn/u/zxczxc0417

博文

自编的计算纳米粒子直径的小程序

已有 3009 次阅读 2012-1-21 06:45 |个人分类:乱七八糟|系统分类:科研笔记| 博士, 安家费, 女朋友, 会议室, 玻璃窗

自己编写了一个matlab的小程序,用来计算球形纳米粒子的直径,希望对大家有用。这个程序非常简单,只要设置5个参数:前两个是输入和输出文件的路径和名称;第三个是一个数据的门槛,适当的数值可以把纳米粒子和背景区分开;第四个是TEM照片中标尺的大小,单位nm;第五个是估计图中有多少个纳米粒子。详细程序:

 

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This programme can select and calculate the size of nanoparticles in TEM picture.
% How to use:
% 1. Input parameters in 'Parameter Setting Part' according to the instructions
% 2. Run program
% 3. Select start and end of the ruler, click two times at different place
% 4. After a flash, click the center of nanoparticles
% 5. The Diameter of nanoparticles is in outfile
% Note: nanoparticles are regarded as a spherical ball
% Built by Xiaochun Zhou, 05-22-2009
% Enjoy it! Any questions? Ask zxczxc0417@163.com.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear;clc;
%------------ Parameter Setting Part -----------------%
infile='E:Documentdata115094-5.jpg'; % TEM figure
outfile='E:Documentdata115094-5.txt'; % Output file of Diameter

thresh = 120; % for figure
dx = 100; % nm, size of the ruler
n_p = 5; % how many particles in your figure
%------------ Parameter Setting Part -----------------%

[x,map] = imread(infile);
[heigth width kjk] = size( x );
x = x(:,:,1);
x = double(x);

for i = 1:heigth
    for j = 1:width       
        if x(i,j) > thresh
            x(i,j) = 0;
        else
            x(i,j) = 100;
        end
       
    end
end

msgbox('select the start and end point ruler in your map!!!!!!!!!!!!');
pause(3);
imshow(x);

[xa,yb] = ginput(2);
dxdy = ( dx/abs( xa(1) - xa(2) ) ) * ( dx/abs( xa(1) - xa(2) ) );

% msgbox(['dxdy = ' num2str(dxdy)]);  
close

imshow(x);

for i = 1:n_p % NP number
    [xa,yb] = ginput (1);
   
    xa = round(xa);
    yb = round(yb);
    area(i) = 0;
   
    for j = 0:1000  
        if x(yb,xa +j) < thresh/2
            break
        end
       
        for yi = 0:1000
            if x(yb + yi,xa +j) < thresh/2
                break
            else
                area(i) = area(i) + 1;
            end
        end
       
        for yi = 1:1000
           
            if x(yb - yi,xa +j) < thresh/2
                break
            else
                area(i) = area(i) + 1;
            end
        end     
       
    end
   
    for j = 1:1000  
        if x(yb,xa -j) < thresh/2
            break
        end
       
        for yi = 0:1000
            if x(yb + yi,xa - j) < thresh/2
                break
            else
                area(i) = area(i) + 1;
            end
        end
       
        for yi = 1:1000
            if x(yb - yi,xa - j) < thresh/2
                break
            else
                area(i) = area(i) + 1;
            end
        end  
       
    end  
   
end
close


for i = 1:n_p % NP number
    area(i) = area(i) * dxdy;
    diameter1(i) = 2*sqrt( area(i)/3.14159 );
end
diameter1 = diameter1';
dlmwrite(outfile,diameter1);



https://blog.sciencenet.cn/blog-236430-530634.html

上一篇:怎么管理越来越多的电子文档和电子数据
下一篇:新科CBHD高清播放机体验(图)
收藏 IP: 221.224.90.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-6 19:44

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部