| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9497 人关注过本帖, 1 人收藏
标题:【图像】【转帖】利用matlab绘制光栅条纹图像
只看楼主 加入收藏
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
结帖率:100%
收藏(1)
 问题点数:0 回复次数:9 
【图像】【转帖】利用matlab绘制光栅条纹图像
无意中发现坛子里还有matlab专区,下面转帖来自matlab技术论坛的帖子:

本帖调用自编函数(grating)绘制光栅条纹图像,通过例子讲解水平、竖直、环状和辐射状光栅条纹图像的绘制,用黑白和彩色显示效果给大家视觉上的震撼。调用自编函数时,可以通过成对出现的参数控制条纹的方向、颜色、周期、相位角等。

传送门     http://www.
搜索更多相关主题的帖子: 光栅 彩色 grating matlab 传送门 
2011-12-17 14:12
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:0 
这里好冷。。。。把帖子完善一下吧
grating.m
程序代码:
function IMA = grating(m,n,varargin)
%   绘制光栅图
%   grating(m,n) 绘制光栅图(灰度图),m为灰度值矩阵的行数,n为列数
%   grating(m,n,'PARAM1',val1, 'PARAM2',val2, ...) 用成对出现的参数名/参数值
%       指定光栅图的显示属性,可用的参数名/参数值如下:
%       'Direction'  --  设定光栅条纹的方向,其参数值为:
%           'horizontal' -- 水平条纹
%           'Vertical'   -- 竖直条纹
%           'circle'     -- 同心圆条纹
%           'radiated'   -- 辐射状条纹
%
%       'Velocity'  --  设定角速度,其参数值为标量
%
%       'Angle'  --  设定初始相位角,其参数值为标量
%
%       'Color'  --  设定光栅条纹的颜色,其参数值为:
%           'Gray' -- 黑白条纹
%           'Rgb'  -- 彩色条纹
%
%   IMA = grating( ... ) 返回光栅图对应的灰度值矩阵
%
%   CopyRight:xiezhh(谢中华)
%   2011.11.26
%   Example:
%       grating(512,512,'direction','rad','Velocity',5000,'color','rgb');
%       grating(512,512,'Velocity',20,'maxgrayval',200)
%       grating(512,512,'direction','ver','Velocity',40)
%       grating(512,512,'Velocity',20,'maxgrayval',200,'direction','cir')

if nargin < 2
    error('输入参数过少');
end
[Direction,Vel,Ang,Col,MaxGrayVal] = parseInputs(varargin{:});

if strncmpi(Direction,'hor',3)
    x = (1:m)';
    Theta = x*pi/Vel;
    Theta = repmat(Theta,[1,n]);
elseif strncmpi(Direction,'ver',3)
    x = 1:n;
    Theta = x*pi/Vel;
    Theta = repmat(Theta,[m,1]);
elseif strncmpi(Direction,'cir',3)
    x = repmat((1:n),[m,1])-n/2;
    y = repmat((1:m)',[1,n])-m/2;
    D = sqrt(x.^2 + y.^2);
    Theta = D*pi/Vel;
elseif strncmpi(Direction,'rad',3)
    x = repmat((1:n),[m,1])-n/2;
    y = repmat((1:m)',[1,n])-m/2;
    Theta = atan2(y,x);
    Theta = Theta*Vel;
else
    error('方向参数只能为Horizontal,Vertical,Circle, Radiated 之一');
end

if strncmpi(Col,'gra',3)
    I = cos(Theta + Ang);
    I = mat2gray(I);
    IM = uint8(MaxGrayVal*I);
elseif strncmpi(Col,'rgb',3)
    I = zeros(m,n);
    IM = uint8(zeros(m,n,3));
    for i = 1:3
        I = cos(Theta + i*Ang);
        IM(:,:,i) = uint8(MaxGrayVal*mat2gray(I));
    end
else
    error('颜色参数只能为Gray, Rgb 之一');
end
if nargout == 0
    figure;
    imshow(IM);
else
    IMA = IM;
end

%--------------------------------------------------------------------------
%  解析输入参数
%--------------------------------------------------------------------------
function [Direction,Vel,Ang,Col,MaxGrayVal] = parseInputs(varargin)

if mod(nargin,2)~=0
    error('输入参数个数不对,应为成对出现');
end
pnames = {'direction','velocity','angle' 'color','maxgrayvalue'};
dflts =  {'horizontal',30,pi/3,'gray',255};
[Direction,Vel,Ang,Col,MaxGrayVal] = ...
    internal.stats.parseArgs(pnames, dflts, varargin{:});

validateattributes(Direction,{'char'},{'nonempty'},mfilename,'direction');
validateattributes(Vel,{'numeric'},{'scalar','nonempty'},mfilename,'velocity');
validateattributes(Ang,{'numeric'},{'scalar','nonempty'},mfilename,'angle');
validateattributes(Col,{'char'},{'nonempty'},mfilename,'color');
validateattributes(MaxGrayVal,{'numeric'},{'scalar','nonempty'},mfilename,'maxgrayvalue');


何必等待?梦在今朝
2012-01-27 21:39
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:0 
【例1】绘制水平条纹光栅图像
1. 黑白条纹
grating(512,512,'Velocity',20,'maxgrayval',200)
效果图:



何必等待?梦在今朝
2012-01-27 21:53
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:0 
2. 彩色条纹
grating(512,512,'Velocity',20,'Color','rgb')
效果图:


何必等待?梦在今朝
2012-01-27 21:54
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:0 
God,图片怎么没了。。。。那打包一起上传好了。。。。然后继续:

【例2】绘制竖直彩色条纹光栅图像
grating(512,512,'Velocity',50,'Color','rgb','Direction','ver')
效果图:
untitled3.jpg


【例3】绘制环状条纹光栅图像
1. 黑白条纹
grating(512,512,'Velocity',50,'Color','rgb','Direction','cir')
效果图:
untitled4.jpg

2. 彩色条纹
grating(512,512,'Direction','cir')
效果图:
untitled5.jpg

【例4】绘制辐射状条纹光栅图像
1. 黑白条纹
grating(512,512,'direction','rad')
效果图:
untitled6.jpg

2. 彩色条纹
grating(512,512,'direction','rad','Velocity',20,'color','rgb')
效果图1:
untitled7.jpg
grating(512,512,'direction','rad','Velocity',6800,'color','rgb')

效果图2:
untitled8.jpg

----------------------------------------------------------------------------------------------------------------
Desktop.rar (303.82 KB)

最后一张图真的很炫啊啊啊啊啊

何必等待?梦在今朝
2012-01-27 22:07
kennyrogers
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-2-7
收藏
得分:0 
楼主,你的怎么都没有图像,我对你的还比较感兴趣的,顶下,增加点人气。
2012-02-07 20:02
dkj108
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-2-14
收藏
得分:0 
ltud kngb?
2012-02-14 21:50
luoturn
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-3-29
收藏
得分:0 
楼主,出问题了
>> grating(512,512,'direction','rad','Velocity',6800,'color','rgb')
??? Undefined variable "internal" or class "internal.stats.parseArgs".

Error in ==> grating>parseInputs at 88
 [Direction,Vel,Ang,Col,MaxGrayVal] = ...

Error in ==> grating at 33
 [Direction,Vel,Ang,Col,MaxGrayVal] = parseInputs(varargin{:});
2012-03-29 19:41
ningjingzhiw
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-10-9
收藏
得分:0 
怎么不能看到图啊
2016-10-09 21:46
ghq890707
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-10-24
收藏
得分:0 
我也有问题
运行不出来
2016-10-24 15:45
快速回复:【图像】【转帖】利用matlab绘制光栅条纹图像
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024607 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved