典型的心理物理实验通常通过各种显示设备向观察者显示刺激(常将处理过的特殊数字图像作为刺激),通过交互设备(键盘、鼠标、按键盒等)接收被试者反应。

通过matlab及psychtoolbox3工具包完成实现所需的刺激呈现、应答接收、以及数据拟合处理......

Psychtoolbox的维基网址为http://psychtoolbox.org/wiki  该网站中提供了一个论坛,以及供用户下载和安装Psychtoolbox的软件包以及系统要求的版本信息。

Psychtoolbox网站上概述和介绍,以及各种教程http://psychtoolbox.org/PsychtoolboxTutorial 读者还可以使用MATLAB中的帮助功能访问与工具箱函数的文档介绍页面。


图像(正弦光栅、外部噪声图像和纹理等)通常在文件或计算机内存中以数字形式保存为位图或像素图——位或像素(图像元素)的空间映射表示图像在x,y处每一点的颜色。

图像的位图是具有相应行数和列数的二维像素阵列。每个像素元素给出图像中对应行和列位置中的像素强度值。图像像素通常被存储为1,4,8,16,24,32,48或64位/像素。位/像素的数值被称为颜色深度。

(1)正弦波是视觉心理物理学中的基本图形。Gabor是一个由二维高斯(正常或钟形)函数窗口化的正弦波,具有明确的空间频率范围,并包含在窗口化的空间中,它是视觉研究中最常用的刺激之一。

l(x,y)=l0 (1.0±csin{2 π f [ysin(θ)+xcos(θ)]})     正弦波方程

l(x,y)=l0 (1.0±csin{2 π f [ysin(θ)+xcos(θ)]}×exp[ ])   Gabor的方程         l(x,y)是图像中位置(x,y)处像素的灰度级l0平均灰度级f正弦波的频率(1 /像素),θ正弦波的倾斜角

效果图(中)生成matlab代码(右)        meshgrid 函数用来生成网格矩阵,可以是二维网格矩阵

(2)白噪声图像

噪声图像通常用于改变图像质量或终止视觉处理。常用高斯白噪声(即是每个像素的值均从均值等于中值或中性灰度、标准差为可实现强度值范围中一部分的正态分布中随机抽取)

                          

(3)滤波图像

我们常需要不同空间频率的图像刺激,通过matlab设计不通滤波器可实现不同图像的处理。

         1. imread     读取图像,得到矩阵map和相应的颜色映射M    如 [M,map] = imread ( 'Church.jpg','jpeg' ) ;% M is a true color image in a 1944x2896x3 matrix    showImage (M,' ' ) ;%显示图片

2. rgb2gray  灰度变换(将真实的RGB图像转换为灰度图像)、函数可以保留亮度信息的同时,消除有关色彩的色调和饱和度的信息

[M,map] = imread ( 'Church.jpg','jpeg') ;   M2 = rgb2gray(M) ;    showImage (M2,'grayscale' ) ;

3. im2bw      读取并将图像转换为二进制黑白图(无灰度)

        4. 几何变换    调整大小、旋转和裁剪

            

5. 滤波   滤波用于删除减少图像的某些特性或成分,空间频率滤波器被用于创建特殊的实验刺激。

          通过快速傅立叶变换(fft2)来完成的,fft2对图像中每个空间频率的数量进行编码

傅里叶分析用空间频率内容来描述一幅图像。低空间频率对应于空间中强度的缓慢起伏,而高空间频率对应于空间中强度的快速变化。

      (1)低通滤波器   衰减高空间频率,同时“通过”(保持)低空间频率,这会模糊原始图像

      (2)高通滤波器    保持高空间频率的同时衰减低空间频率,保留图像中更锐利的边缘

      (3)带通滤波器    衰减非常低和非常高的空间频率

· 原始教堂图片及其傅里叶频谱(第一行)

· 低通滤过的教堂图片及其傅里叶频谱(第二行)

· 高通滤过的教堂图片及其傅里叶频谱,以及高通滤波器(第三行)

· 带通滤过的教堂图片及其傅里叶频谱,以及带通滤波器(第四行)

图像的傅立叶描述包括幅度谱相位谱。幅度谱表示每个空间频率分量的幅度(数量),而相位谱描述了正弦波频率分量的位置


一、matlab基础

常见函数和知识点:https://blog.csdn.net/nonmarking/article/details/20424997

简要列举经常用到的:

1. 连接数组   C=cat(dim, A,B)--cat(2,A,B)与[A,B]相同,cat(1,A,B)与[A;B]相同

数组初始化:zeros(m,n)返回用0初始化的m行n列的矩阵,ones返回1初始化的m行n列矩阵

2. 类型转换     num2str :把数字转换为字符串

str2double :把字符串转换为双精度浮点数

str2num :把字符串转换为数字

3. 元胞数组      cell :创建元胞数组    c=cell(n)c=cell(m,n)

celldisp :显示元胞数组的内容

cellfun :把函数应用于元胞数组中的每个元素  A=cellfun(fun, C, D,...)

cellplot :以图形形式显示元胞数组的结构

cellstr :根据字符串数组创建字符串元胞数组

mat2cell :把矩阵分割为元胞数组  c=mat2cell(x,m, n)

num2cell :把数值数组转变为元胞数组   C=num2cell(A)

4. 字符串          strcmp , strcmpi(不区分大小写) :比较字符串---strcmp('str1','str2')相同返回1,不同返回0

5. 基本运算      :加法运算符

:减法运算符

:矩阵乘法

.*:数组乘法

/:斜杠或者矩阵右除   B/A等于公式B*inv(A)

./:数组右除    A./B等于A(i,j)/B(i,j)

\:反斜杠或者矩阵左除    A\B等于inv(A)*B

.\:数组左除     A.\B等于B(i,j)/A(i,j)

^:矩阵幂计算

 .^:数组幂计算    A.^B等于A(i,j)的B(i,j)次幂

:矩阵转置

[]:表示空矩阵,A(m,:)删除A中的一行,A(:,n)删除A中的一列

 {}:元胞组赋值

关系操作符:<  <=  >  >=  ==   ~ =

逻辑操作符 : 逻辑:&&  ||     、    数组:&  |  ~

6. 矩阵

取值:e(2 , :)%取第2行所有元素
                                      e(: , 3)%取第三列所有元素
                                      e([1 3] , :)%取第1和第3行所有元素
                                      e([1 3] , [2 4])  %分别取e(1,2);e(1,4);e(3,2);e(3,4)的元素

翻转:flipud(e)%矩阵上下翻转
                                    fliplr(e)%矩阵左右翻转
                                    rot90(e)%矩阵旋转90度

7. 绘图      v1=0:10:100
                         v2=9/5*v1+32

figure(n)% 新建第n个图形figure
                        plot(v1 , v2,  'ro-')  %以v1为横坐标  v2为纵坐标进行描点画图用-连接起来

hold on;保持原图叠加绘图       subplot  % 将多个图画到一个平面上

二、ptb3 基础知识     核心函数  Screen   窗口函数   、所有屏幕:Screen("Screens")、 获取帮助:Screen("Openwindow?")

ptb3通过Screen窗口函数向受试者呈现各种满足实验需求的刺激,常用函数整理:

(1). 打开一个窗口  Screen('Openwindow',0)   关闭窗口 Screen('Close',w)

(2). try-catch-end ,try下面的语句出现问题的时候,会自动执行catch后面的语句,跳出程序,不会出现程序卡死等问题

(3). Screen的画图子函数   FillRect  FrameRect  FillOval  FrameOval  FillArc  FrameArc  DrawLine

% 1.直线 Screen('DrawLine', windowPtr [,color], fromH, fromV, toH, toV [,penWidth]);
                       % 2.曲线Screen('DrawArc',windowPtr,[color],[rect],startAngle,arcAngle)
                       % 3.曲线Screen('FrameArc',windowPtr,[color],[rect],startAngle,arcAngle[,penWidth] [,penHeight] [,penMode])
                       % 4.填充多边形Screen('FillArc',windowPtr,[color],[rect],startAngle,arcAngle)
                       % 5.更换背景色Screen('FillRect', windowPtr [,color] [,rect] );
                       % 6.多边形边框填充Screen('FrameRect', windowPtr [,color] [,rect] [,penWidth]);
                       % 7.绘制圆形Screen('FillOval', windowPtr [,color] [,rect] [,perfectUpToMaxDiameter]);
                       % 8.Screen('FrameOval', windowPtr [,color] [,rect] [,penWidth] [,penHeight] [,penMode]);
                       % 9.矩阵绘制Screen('FramePoly', windowPtr [,color], pointList [,penWidth]);
                       % 10.填充多边形Screen('FillPoly', windowPtr [,color], pointList [, isConvex]);

(4). 刺激应答

fprintf('Please click the mouse now.\n');%鼠标应答,获取按下的坐标
                             [x,y,buttons] = GetMouse;
                         while any(buttons) % if already down, wait for release
                             [x,y,buttons] = GetMouse;
                          end

KbName('UnifyKeyNames');  % 键盘应答、定义键盘按键
                        larrow = KbName('LeftArrow'); % 定义左右键
                        rarrow = KbName('RightArrow');

(5). 其他

Screen('Flip',w);   %屏幕刷新
                     HideCursor; %隐藏鼠标的光标,以免实验过程中受到打扰

ShowCursor;   %显示光标

KbWait;  %等待按键的命令、按任意键继续

Waitsecs(2); %保持图形可见2秒

% 程序示例1   以下是新建一个窗口helloworld实例
try     Screens=Screen('Screens');      ScreenNum=max(Screens);      % 打开一个新的屏幕  [w, wRect] = Screen('OpenWindow', ScreenNum);   % w指代当前的屏幕的位置大小信息,当前屏幕的分辨率是1680×1050, wRect就是[ 0 0 1680 1050]      black=BlackIndex(w);     white=WhiteIndex(w);     gray=(white+black)/2;     % 当前屏幕的最大、最小灰度值,一般white=255, black=0; 两者均值设为gray          Screen('FillRect',w,gray); %把屏幕w涂成gray颜色     Screen('Flip',w); %需要flip上面对屏幕的操作才会显现出来          HideCursor; %隐藏鼠标的光标,以免实验过程中受到打扰       Text='Hello World!';  %需要呈现的文字     %oldTextSize=Screen('TextSize',w,36); %调整文字的大小为36号     Screen('DrawText', w, Text, 420, 340,[0,0,255]); %呈现文字在屏幕上的函数,颜色为蓝色        Screen('Flip',w); %同上面。需要flip对屏幕的操作才会显现出来     KbWait;     %按任意键继续              Waitsecs(2); %屏幕2秒      Screen('CloseAll');  %结束,关闭屏幕     ShowCursor;   %显示光标(前面把光标隐藏了),否则程序结束后屏幕上也没有光标
catch     ShowCursor;     Screen('CloseAll');     Priority(0);     psychrethrow(psychlasterror);
end

视觉心理物理学(2)matlab与ptb3相关推荐

  1. 物理学常数 matlab,[转载]科学计算:Python VS. MATLAB(6)----物理常数

    科学计算:Python VS. MATLAB(6)----物理常数 物理常数亦被称为物理学常量或自然常数,指的是物理学中数值固定不变的物理量,是一个与物理测量无关的固定值.物理常数有很多,其中比较著名 ...

  2. MATLAB可视化大学物理学光盘,MATLAB可视化大学物理学

    本书物理和程序并重,即讲解了物理学的基本知识,公式的推导,还给出了很多实例的计算机程序. ¥69.00定价:¥69.00 本书物理和程序并重,即讲解了物理学的基本知识,公式的推导,还给出了很多实例的计 ...

  3. Objective Quality Assessment of Tone-Mapped Images

    Abstract 将高动态范围(HDR)图像转换为低动态范围(LDR)图像的色调映射操作符(TMOs)为HDR图像在标准LDR显示上的可视化提供了实用的工具.不同的TMOs创建不同的色调映射图像,一个 ...

  4. 《A Model of Saliency-based Visual Attention for Rapid Scene Analysis》翻译和笔记

    原文链接:A Model of Saliency-based Visual Attention for Rapid Scene Analysis 以机翻为主,人工校对. 摘要 A visual att ...

  5. D.Marr的计算视觉理论

    人机融合智能中输入表征阶段里数据与信息/知识的融合就是能指与所指的切换.事实与价值的转化.形式化与意向性的联结.being与should的过渡.语法与语义的调度.Marr的工作对此可见一斑: 剑桥大学 ...

  6. 于殿泓 图像检测与处理技术_图像检测与处理技术(21世纪高等学校仪器仪表及自动化类专业规划教材)...

    导语 本书是21世纪高等学校仪器仪表及自动化类专业规划教材,从图像检测与处理技术的整体知识框架出发,让读者对图像检测与处理技术的基本内容.背景以及相关的基础理论有深刻的理解.其中包括图像检测的物理基础 ...

  7. 于殿泓 图像检测与处理技术_二手图像检测与处理技术 于殿泓 计算机 西安电子科大学出版社...

    基本信息 书名:图像检测与处理技术 原价:18.(咨询特价) 作者:于殿泓 出版社:西安电子科技大学 出版日期:2006年12月1日 ISBN(咨询特价) 字数: 页码:231 版次:第1版 装帧:装 ...

  8. FedDG:在连续频率空间中通过情景学习进行医学图像分割的联合域泛化

    摘要 论文地址:https://arxiv.org/pdf/2103.06030.pdf 联邦学习使分布式医疗机构可​​以共同学习具有隐私保护功能的共享预测模型.在进行临床部署时,如果将联合学习中训练 ...

  9. 深度学习推动数字人文科学发展

    --研究人员利用人工智能解开古代文献的秘密 图 1 瑞士的圣加勒修道院图书馆 在瑞士的圣加勒修道院图书馆收藏了大约16万卷,可追溯到八世纪的文学和历史手稿.所有这些手稿都是用现代很少使用的语言手工写在 ...

  10. matlab可视化大学物理学_传输矩阵法在大学物理波动光学教学中的应用

    1 提出问题 在现代光学技术中,从基本的光学元件增反膜和增透膜[1],到超快光路中用来补偿飞秒激光色散的啁啾镜,以及半导体微腔领域中广泛使用的分布式布拉格反射器(DBR)[2],这些光学元件基本的特征 ...

最新文章

  1. 和12岁小同志搞创客开发:如何选择合适的传感器?
  2. spyder怎么显示文件目录_MKV怎么转换为MP4?用它,快速转换!
  3. php 派生类 构造,C++派生类的构造函数和析构函数
  4. Java Thread 多线程 操作线程
  5. SQLyog 注册码记录
  6. HCIE-Datacom V1.0 考试大纲
  7. 特斯拉为什么要“干掉”保险丝和继电器?
  8. 转载:微信抢红包算法
  9. window 脚本文件.bat获取最高权限拷贝文件及c++调用.bat文件示例
  10. linux磁盘转gpt,Linux中磁盘如何转换GPT格式
  11. 【回文数】求11到n之间(包括n),既是素数又是回文数的整数有多少个。 输入 一个大于11小于1000的整数n。 输出 11到n之间的素数回文数个数。 样例输入 Copy 23 样例输出 Copy 1
  12. 手机失窃个人信息泄露彻底
  13. 非虫 android应用逆向,android逆向-ARM汇编基础-非虫笔记
  14. matlab 画网格
  15. 为C1Menu for Silverlight添加动画显示效果
  16. 【论文阅读】让数据库听懂人话(Text-to-SQL)
  17. ISO 8583报文
  18. 未明学院:用excel不好吗?为什么还要学python?
  19. 7个从Windows计算机上恢复Word文档的方法
  20. FAQ: ggplot2常见问题

热门文章

  1. cocos2d_x之AnySDK接入流程
  2. 使用unity3d 接入anySDK的总结2
  3. android star法则简历,优秀简历的STAR原则
  4. 【开始报名】第二届中国移动“梧桐杯”大数据应用创新大赛邀你夺52w大奖
  5. 通俗易懂奈奎斯特定理和香农定理
  6. STL ++iter与iter++区别
  7. 厦大C语言上机 1360 算日期
  8. 英语基本句型及一般时态
  9. CTF 实验吧 变异凯撒 writeup
  10. 相律公式表达式_第六章 相平衡主要公式及其适用条件