精华内容
下载资源
问答
  • if(idx 图像宽 && idy 图像高) //图像宽 ,图像高通过参数传入 { ;"> ……//对图像进行相应单像素操作 } } 按照上面访问方式 就可以进行图像逐像素遍历。 各个元素解释如下: dim3 : 定义如下 struct...

    最近进行gpu编程,受困于杂事,对threadIdx blockIdx blockDim理解存在偏颇导致浪费不少时日。遂整理资料加深认识。

    以下是最常见的gpu图像遍历方式:

    dim3 dimBlock( 线程数1, 线程数2,1) ;//最开始,望文生义而把后面数据理解为 threadIdx 的值导致大量时间浪费在这上面。这边就是线程数,不是块数。不要被网上代码迷惑
    dim3 dimGrid( ceil( ( 图像宽 + 线程数1 - 1)/线程数1 ) ,ceil( ( 图像高 + 线程数 2-1) /线程数2) , 1 ) ;
    Cal<<<dimGrid , dimBlock>>>(图像数据首地址 …… );
    __global__ void Cal(unsigned char * srcData ……)
    {
    	const int idx = threadIdx.x + blockIdx.x * blockDim.x;
    	const int idy = threadIdx.y + blockIdx.y * blockDim.y;
    …………
             if(idx  < 图像宽 && idy < 图像高) //图像宽 ,图像高通过参数传入
    	{
    <span style="white-space: pre;">		</span>……//对图像进行相应单像素操作
    	}
    }

    按照上面访问方式 就可以进行图像逐像素遍历。 各个元素解释如下:

    dim3             :  定义如下

      struct __device_builtin__ dim3
    {
        unsigned int x, y, z;
    #if defined(__cplusplus)
        __host__ __device__ dim3(unsigned int vx = 1, unsigned int vy = 1, unsigned int vz = 1) : x(vx), y(vy), z(vz) {}
        __host__ __device__ dim3(uint3 v) : x(v.x), y(v.y), z(v.z) {}
        __host__ __device__ operator uint3(void) { uint3 t; t.x = x; t.y = y; t.z = z; return t; }
    #endif /* __cplusplus */
    };


    blockDim.x : 块操作x方向维数 , 对应   ceil( ( 图像宽 + 线程数1 - 1)/线程数1 )  所在位置指定值。

    blockDim.y : 快操作y方向维数 , 对应   ceil( ( 图像高 + 线程数 2-1) /线程数2)   所在位置指定值。

    threadIdx.x : 当前线程 x 方向值 , 范围 0~ 线程数1 -1 。

    threadIdx.y : 当前线程y方向值   , 范围 0~ 线程数2 - 1 。

    blockIdx.x   : 当前块 x方向值 ,       范围 0~ceil( ( 图像宽 + 线程数1 - 1)/线程数1 )  -  1

    blockIdx.y   : 当前块 y方向值 ,       范围 0~ceil( ( 图像高 + 线程数 2-1) /线程数2) - 1


    通过以上 知识,可以计算得到   idx 的最小值= 0 , idx最大值<=  图像宽 + 线程数1 - 1 ,并且遍历 最大最小值之间所有值,因此可以把宽度方向遍历完毕。同理,y方向也刚好每行遍历一次,不存在重复遍历元素情况。

    在之后,因为有共有参数,嫌这样方式慢,我更改为二维方式访问。频繁出错,出错原因就在于  忽略  “遍历 最大最小值之间所有值” 这个条件导致出错。

    最后遍历方式:

    //块,线程设置

    dim3 dimBlock(线程数1, 线程数2,1) ;

    dim3 dimGrid(1, 块数2, 1 ) ;

    //调用

    Cal<<<dimGrid , dimBlock>>>(图像数据首地址 …… );

    __global__ void Cal(unsigned char * srcData ……)

    {

    const int idx = threadIdx.x ;

    const int idy = threadIdx.y + blockIdx.y * blockDim.y ;

    //载入共享数据

    ……

    for(int dy = idy + offsetLoc;dy < 图像高; dy += 线程数2*blockDim.y)

    {

    for(int dx = idx ; dx < 图像宽; dx += 线程数1)

    {

    //逐像素操作

    }

    }

    }

     
    

    之所以按照上面访问方式,是因为有使用共享内存的需要。并不是最优方案,按照自己需求更改访问方式。


    展开全文
  • 一个完整的基于matlab的数字图像处理课程设计,有源码和论文
  • 图像匹配相应matlab程序设计

    热门讨论 2009-04-02 18:46:36
    2.数字图像匹配算法设计 ⑴基于灰度的归一化匹配算法 ⑵基于灰度的快速模板匹配算法 三.相应matlab程序设计 1.数字图像匹配相关函数 2.数字图像匹配函数 (1) 基于灰度的归一化匹配算法 (2) 基于灰度的...
  • 包括各种类型题目的图像处理设计报告,论文,报告过程详细,解释透彻,并附有单步和总代码,很好的资源,不要错过.
  • MATLAB2013实现图像处理GUI界面设计

    万次阅读 多人点赞 2019-01-09 12:55:49
    主界面主要包含两个axes来显示图像处理前后的效果。 3.下面来介绍本文设计的程序: function varargout = gui(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilenam...

    程序源码:https://github.com/klc407073648/matlab

    1.首先在Matalb命令行中输入guide指令:

    2.点击open,打开我设计好的界面如下:

    主界面主要包含两个axes来显示图像处理前后的效果。

    3.下面来介绍本文设计的程序:

    function varargout = gui(varargin)
    
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @gui_OpeningFcn, ...
                       'gui_OutputFcn',  @gui_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
    
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    
    function gui_OpeningFcn(hObject, eventdata, handles, varargin)
    handles.output = hObject;
    guidata(hObject, handles);
    
    function varargout = gui_OutputFcn(hObject, eventdata, handles) 
    
    varargout{1} = handles.output;
    
    % --------------------------------------------------------------------
    %文件
    function open_Callback(hObject, eventdata, handles)%打开图片
    global im   %定义一个全局变量im
    global im2
    [filename,pathname]=...
        uigetfile({'*.*';'*.bmp';'*.tif';'*.png'},'select picture');  %选择图片路径
    str=[pathname filename];  %合成路径+文件名
    im=imread(str);   %读取图片
    im2=im;
    axes(handles.axes1);  %使用第一个axes
    imshow(im);  %显示图片
    
    function save_Callback(hObject, eventdata, handles)%保存图片
    global BW 
    set(handles.axes2,'HandleVisibility','ON');
    axes(handles.axes2);
    [filename,pathname]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'save image as');
    file=strcat(pathname,filename);
    BW=getimage(gca);
    imwrite(BW,file);
    set(handles.axes2,'HandleVisibility','Off');
    function quit_Callback(hObject, ~, handles)%退出操作
    close(gcf)  %关闭当前Figure窗口句柄
    
    % --------------------------------------------------------------------
    %菜单栏的调回函数,实际不使用
    function t1_Callback(hObject, eventdata, handles)
    
    function t2_Callback(hObject, eventdata, handles)
    
    function t3_Callback(hObject, eventdata, handles)
    
    function t4_Callback(hObject, eventdata, handles)
    
    function t5_Callback(hObject, eventdata, handles)
    
    function t6_Callback(hObject, eventdata, handles)
    
    function t7_Callback(hObject, eventdata, handles)
    
    function t8_Callback(hObject, eventdata, handles)
    
    function t9_Callback(hObject, eventdata, handles)
    
    
    % --------------------------------------------------------------------
    % 图像类型变换
    function rgb2gray_Callback(hObject, eventdata, handles)%原图-灰度
    global im
    global BW  %定义全局变量  
    axes(handles.axes2); 
    BW=rgb2gray(im);
    im=BW;
    imshow(BW);
    
    function im2bw_Callback(hObject, eventdata, handles)%原图-二值
    global im
    global BW  %定义全局变量  
    axes(handles.axes2); 
    BW=im2bw(im);
    im=BW;
    imshow(BW);
    
    function dither_Callback(hObject, eventdata, handles)%灰度-二值
    global im
    global BW  %定义全局变量  
    axes(handles.axes2); 
    BW=dither(im);
    im=BW;
    imshow(BW);
    
    % --------------------------------------------------------------------
    % 边缘检测
    function roberts_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2);   %使用第二个axes
    BW=edge(im,'roberts',0.04);
    imshow(BW);
    
    function sobel_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2);   %使用第二个axes
    BW=edge(im,'sobel',0.04);
    imshow(BW);
    
    function prewitt_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2);   %使用第二个axes
    BW=edge(im,'prewitt',0.04);
    imshow(BW);
    
    function log_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2);   %使用第二个axes
    BW=edge(im,'log',0.003);
    imshow(BW);
    
    function canny_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2);   %使用第二个axes
    BW=edge(im,'canny',0.2);
    imshow(BW);
    
    
    % --------------------------------------------------------------------
    %图像变换
    function DFT_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2); 
    I1=double(im);
    I2=fft2(I1);
    I3=fftshift(I2);
    I3=log(abs(I3));
    BW=I3;
    imshow(BW,[]);
    
    function DCT_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2); 
    I1=double(im);
    I2=dct2(I1);
    I3=log(abs(I2));
    BW=I3;
    imshow(BW);
    
    % --------------------------------------------------------------------
    % 图像旋转
    function rotate_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量 
    % A=getimage(handles.axes1);
    A=im;
    axes(handles.axes2); 
    prompt={'度数:'};
    def={'90'};
    answer=inputdlg(prompt,'请输入:',1,def);
    if ~isempty(answer)
    a = str2num(answer{1});
    J=imrotate(A,360-a);
    BW=J;
    imshow(BW);
    end
    
    function Initial_Callback(hObject, eventdata, handles)%初始化
    global im
    global im2
    global BW  %定义全局变量 
    BW=im2;
    im=im2;
    axes(handles.axes2); 
    imshow(BW);
    
    % --------------------------------------------------------------------
    % 图像噪声添加
    function gaussian_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量 
    I=im2double(im);
    J=imnoise(I,'gaussian');
    BW=J;
    axes(handles.axes2); 
    imshow(BW);
    
    function salt_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量 
    I=im2double(im);
    J=imnoise(I,'salt & pepper');
    BW=J;
    axes(handles.axes2); 
    imshow(BW);
    
    function speckle_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量 
    I=im2double(im);
    J=imnoise(I,'speckle');
    BW=J;
    axes(handles.axes2); 
    imshow(BW);
    
    function poisson_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量 
    I=im2double(im);
    J=imnoise(I,'poisson');
    BW=J;
    axes(handles.axes2); 
    imshow(BW);
    
    % --------------------------------------------------------------------
    % 图像滤波
    function medilt_Callback(hObject, eventdata, handles)%中值滤波
    global BW  %定义全局变量 
    J=medfilt2(BW, [3,3]);
    BW=J;
    axes(handles.axes2); 
    imshow(BW);
    
    function wiener_Callback(hObject, eventdata, handles)%自适应滤波
    global BW  %定义全局变量 
    J=wiener2(BW,[3,3]);
    BW=J;
    axes(handles.axes2); 
    imshow(BW);
    
    function filter2_Callback(hObject, eventdata, handles)%均值滤波
    global BW  %定义全局变量 
    M1=ones(3);
    M1=M1/9;
    J=filter2(M1,BW);
    BW=J;
    axes(handles.axes2); 
    imshow(BW);
    
    % --------------------------------------------------------------------
    % 形态学图像处理
    function bwmorph_Callback(hObject, eventdata, handles)%骨骼化
    global im
    global BW  %定义全局变量 
    I=im2double(im);
    I=im2bw(I);
    J=bwmorph(I,'remove');
    G=bwmorph(J,'skel',inf);
    BW=G;
    axes(handles.axes2); 
    imshow(BW);
    
    function imfill_Callback(hObject, eventdata, handles)%区域填充
    global im
    global BW  %定义全局变量 
    axes(handles.axes2); 
    I1=im2bw(im);
    
    I2=1-I1;
    se=ones(5);
    I3=imerode(I2,se);
    I4=1-I3;
    I5=imerode(I4,se);
    I6=imerode(I5,se);
    I7=imdilate(I6,se);
    BW=I7;
    
    imshow(BW);
    
    function diagonal_Callback(hObject, eventdata, handles)%对角线特征提取
    global im
    global BW  %定义全局变量 
    axes(handles.axes2);
    I1=im2bw(im);
    v=[1,1,1,1,1,1,1,1,1,1];
    se=diag(v);
    I2=imerode(I1,se);
    I3=imdilate(I2,se);
    BW=I3;
    imshow(BW);
    
    % --------------------------------------------------------------------
    %图像灰度变化
    function plotchange_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2);   %使用第二个axes
    A=im2double(im);
        a=0.3;%0.3 0.7 0.5 0.9
        b=0.7;
        c=0.1;
        d=0.9;
        %0.3 0.7 0.1 0.9
        B=A;
        [m,n]=size(B);
        Mg=max(max(B));
        Mf=max(max(A));
        for (i=1:m)
          for (j=1:n)
            if(A(i,j)>=0&&A(i,j)<=a)
                 B(i,j)=(c/a)*A(i,j);
            end
            if(A(i,j)>=a&&A(i,j)<=b)
                B(i,j)=(((d-c)/(b-a))*(A(i,j)-a))+c;
            end
            if(A(i,j)>=b&&A(i,j)<=1)
                 B(i,j)=(((Mg-d)/(Mf-b))*(A(i,j)-b))+d;
            end
          end
        end
       BW=B;
       imshow(BW);
    
    function imhist_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2);   %使用第二个axes
     BW=im;
     imhist(BW);
     
    function histeq_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2);   %使用第二个axes
    BW=histeq(im);
    imhist(BW);
    
    
    % --------------------------------------------------------------------
    function histeqafter_Callback(hObject, eventdata, handles)
    global im
    global BW  %定义全局变量
    axes(handles.axes2);   %使用第二个axes
    imshow(BW);
    

    4.最终的生成界面如下。

    将原图进行灰度化处理效果如下

    5.GUI界面所实现的功能如下。

    展开全文
  • 基于matlab的数字图像处理GUI设计

    万次阅读 多人点赞 2017-06-08 14:17:21
    matlab 数字图像处理GUI设计

    简单的界面实现的几个简单的功能,只支持JPG格式图像,还有很多需要改进的。


    1、灰度化:提取jpg图像各个像素点的R、G、B三个类型的值,再对其进行加权平均。最后得到一个通道红绿蓝三个类型的加权平均。
    公式为:ima=0.299*ima_red+0.587*ima_green+0.114*ima_blue。


    2、二值化:二值化是在图像灰度化的基础上进行的,通过比较图像每个像素点的灰度值与阈值的大小关系来设置该点为0或1。


    3、中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。本系统中值滤波设置的核为长宽都是6的正方形,在此邻域内来找中值。

    4、低通滤波:在低通滤波中,低频信号能正常通过,而超过设定临界值的高频信号则被阻隔、减弱。首先对图像进行傅里叶变换,接着将FFT的DC分量移到频谱中心,指定滤波器截止频率和滤波半径后,通过低通滤波转换函数与该频率进行比较d=sqrt((i-n1)^2+(j-n2)^2)。若信号大于该频率,则置为0。


    5、均值滤波:均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个滤波核,该核包括了其周围的临近像素,再用核中的全体像素的平均值来代替原来像素值。在本项目中,需先给出设计的正方形核的边长,之后便可以用指定大小的滤波核进行均值滤波。

    6、高斯滤波:高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。高斯滤波是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值用。高斯平滑滤波器对于抑制服从正态分布的噪声非常有效。

    7、形态学-腐蚀:一般腐蚀操作对二值图进行处理,腐蚀操作如左图,当像素点(i,j+1)和(i+1,j)为1时则(i,j)为1。腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的目标物。如果两目标物间有细小的连通,可以选取足够大的结构元素,将细小连通腐蚀掉。

    8、直方图统计:灰度直方图是关于灰度级分布的函数,是对图像中灰度级分布的统计。灰度直方图是将数字图像中的所有像素,按照灰度值的大小,统计其出现的频率。图像直方图由于其计算代价较小,且具有图像平移、旋转、缩放不变性等众多优点,广泛地应用于图像处理的各个领域。

    9、sobel:图像的边缘是灰度或结构等信息的突变处,边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。Sobel算子是一阶导数的边缘检测算子,在算法实现过程中,通过3×3模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。由于只采用2个方向的模板。

    10、canny:Canny检测主要分为四个步骤。首先为防止噪声干扰,先对图像进行去噪。接着可按照sobel的方式来计算图像梯度的幅值和方向。由于梯度大的不一定就是边缘,可以通过每个像素点的方向来确定该像素点在此邻域范围内是否是最大值,若是,则保留该像素点,不是则舍弃。最后用双阈值法再剔除一部分像素点并连接边缘。


    程序下载:http://download.csdn.net/detail/jidushanzhu/9864612


    展开全文
  • 基于MATLAB的GUI图像处理程序设计

    热门讨论 2012-06-20 10:01:44
    学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和...
  • 文章目录一、软硬件环境二、系统功能设计1. 视频帧处理2. OpenPose人体姿态识别3. yolov3手部模型训练4. 人体姿态数字特征提取5. beyes分类识别三、应用四、总结 一、软硬件环境 基于人体姿态的手语图像识别系统采用...

    一、软硬件环境

    基于人体姿态的手语图像识别系统采用了软硬件相结合的方法。硬件部分主要是用于采集手语图像的单目摄像头。软件部分主要是通过ffmpeg对视频图像进行处理,然后在Anaconda下配置Python3.6的开发环境,再结合Cmake编译OpenPose模型,最后在VScode编译器中结合OpenCV中的图像算法,实现了对手语图像识别系统所有程序的编译,通过wxFromBuilder框架整合设计了系统主界面。
    (1) 视频处理工具:ffmpeg-20181115
    (2) 集成开发环境:Microsoft Visual Studio Code、Anaconda3
    (3) 界面设计工具:wxFromBuilder
    (4) 编程语言环境:python3.6

    二、系统功能设计

    一个基于人体姿态研究的手语图像识别系统。根据OpenPose人体姿态开源模型和YOLOv3自训练手部模型检测视频和图像,再把数字特征进行分类器模型预测,将预测结果以文本形式展现出来。

    基于人体姿态的手语图像识别系统是由多模块组成的,主要分为训练模块和识别模块两个部分。

    在这里插入图片描述
    在这里插入图片描述

    1. 视频帧处理

    Python+Opencv2(三)保存视频关键帧

    在这里插入图片描述
    在这里插入图片描述

    2. OpenPose人体姿态识别

    Openpose人体骨骼、手势–静态图像标记及分类(附源码)
    Openpose人体骨骼、手势–静态图像标记及分类2(附源码)

    在这里插入图片描述
    由于仅靠人体姿态4和7关键点不足以识别手部位置,容易误判,因此在最终设计中引入了yolo手部识别。
    在这里插入图片描述

    3. yolov3手部模型训练

    项目结构主要分为两大部分:YOLOv3深度模型训练部分和YOLOv3和OpenPose手语姿态识别部分。

    训练模型思路:
    在这里插入图片描述

    环境:【GPU】win10 (1050Ti)+anaconda3+python3.6+CUDA10.0+tensorflow-gpu2.1.0
    训练模型:【Keras+TensorFlow+Yolo3】一文掌握图像标注、训练、识别(tf2填坑)
    识别:【Keras+TensorFlow+Yolo3】教你如何识别影视剧模型

    在这里插入图片描述

    模型训练参考代码:https://gitee.com/cungudafa/keras-yolo3
    yolo3识别这里参考于:https://github.com/AaronJny/tf2-keras-yolo3

    4. 人体姿态数字特征提取

    识别完整过程思路:
    在这里插入图片描述

    在OpenPose设计中阐述过求解距离和角度的公式及方法,最终因为个体差异每个人的骨骼可能不同,目前优化为距离比(即小臂3-4关键点的距离与脖子长度0-1关键点距离之比)。
    在这里插入图片描述
    基于 keras的yolo3训练部分项目结构如下表所示:

    keras-yolo3训练项目结构:

    名称类型内容
    yolov3.weights配置文件权重文件
    yolov3.cfg配置文件配置文件
    convert.py函数模型格式转换
    train.py函数模型训练
    voc_annotation.py函数voc格式标签
    yolo_annotations.py函数yolo格式标签
    yolo.py函数yolo方法接口
    model_data文件夹参数配置
    nets文件夹yolo网络
    utils文件夹图片加载工具类
    VOCdevkit文件夹VOC格式数据集
    logs文件夹h5训练的模型生成目录

    其中logs文件夹用于存放训练好的模型,VOCdevkit用于存放图片和标注信息。

    model_data文件夹内容:

    名称类型内容
    test.txt文本测试图片信息
    train.txt文本训练图片信息
    val.txt文本训练测试图片信息
    voc_class.txt文本标签样本名称
    yolo_anchors.txt文本先验参数
    yolo_weights.h5模型权重文件

    nets文件夹内容:

    名称类型内容
    darknet53.py函数卷积神经网络结构
    loss.py函数计算图像检测效果
    yolo3.py函数Yolov3网络识别算法

    5. beyes分类识别

    【Sklearn】入门花卉数据集实验–理解朴素贝叶斯分类器

    在这里插入图片描述
    识别部分代码结构:

    名称类型内容
    filesUtils文件夹文件批量处理
    model文件夹模型
    pose文件夹 人体姿态识别相关算法
    ui文件夹界面设计
    yolo3文件夹Yolov3手部识别相关算法
    beyes.py函数分类模型算法
    getKeyFrame.py函数提取视频关键帧
    pose_hand.py函数人姿和手部识别综合接口
    UI.py函数可视化界面
    yolo.py函数手部识别接口
    SaveImg_graphviz.py函数绘制函数关系图

    视频文件处理filesUtils文件夹:

    名称类型内容
    Image_classification.py函数图片分类
    VideoUtils.py函数视频压缩、移动、重命名
    ImgUtils.py函数图片压缩、移动、重命名
    videoConv.bat可执行程序视频批量处理可执行程序

    模型model文件夹:

    文件夹名称类型内容
    pose_cocopose_deploy_linevec.prototxt文本OpenPose人体姿态参数
    -pose_iter_440000.caffemodel模型OpenPose人体姿态模型
    yolov3coco_anchors.txt文本Yolo手部识别先验参数
    voc_classes.txt文本Yolo手部种类
    last1.h5模型Yolo手部识别模型
    train_model.pkl模型朴素贝叶斯分类模型

    基本算法pose和yolov3文件夹:

    文件夹名称类型内容
    posecoco.py函数人体姿态识别算法
    -data_process.py函数坐标信息转数字特征算法
    yolov3model.py函数手部识别算法
    -utils.py函数数据格式处理函数

    三、应用

    预期是通过手机移动端对视频进行采集处理并应用,详见视频

    在这里插入图片描述

    四、总结

    源码源码https://gitee.com/cungudafa/hand-keras-yolo3-recognize

    star三连哦~

    本文采用的是单人的骨骼识别,当然对多人骨骼标记分类是OpenPose的一大亮点,源码中没有扩展,Openpose多人骨骼特征点标记

    视频帧的提取准确性也不够高,扩展衍生为HMM序列,视频动态序列等方法。对于特征提取还可以结合手势动态轨迹特征,能够多维度的描述运动曲线。

    手语识别关键在于手语种类的划分,尤其是中国手语包含5600+词汇,因此NLP自然语言处理融合进来是很有必要的,因此任总而道远,有兴趣的朋友可以试试。

    手语识别不仅为聋哑朋友们日常交流提供方便,更是为人机交互发展做出贡献,有创新意义和价值背景,值得一试哦。


    备注:

    源码会开源放在gitee(目前源码项目有很多笔记过程,也很有价值,需要整理成封装版本,太忙了呀~~不然这个项目还有很多发挥空间)

    模型和视频资料涉及专业学习范畴和多人版权因素,未征得所有人授权,暂不提供

    相关学习内容还可以私聊,闲暇时可以给出经验指导意见。

    展开全文
  • 现在FPGA 通过摄像头采集来的图像处理后主要通过什么来显示
  • 本人亲测,用matlab设计的GUI实现各种数字图像处理功能,有亮度变换,傅里叶变换,几何变换,彩色图像变换,小波变换,空域滤波,频域滤波,运动模糊,去噪声,加噪声,图像复原,图像压缩编码等各种功能均可实现。
  • 该数字图像处理界面是基于Microsoft Visual C++ 6.0 MFC多文档编程的图像处理界面,实现.bmp格式图像的浏览与编辑,导入和导出,图像特效显示,边缘检测,...希望对做vc数字图像处理课程设计的有帮助,源代码+论文文档!!
  • 李兰友 国防工业出版社 第1章 VisualC#.NET基础 1.1 创建一个Visual C#应用程序 1.2 Visual Studio窗口 1.3 Visual C#.NET主菜单 本章小结 第2章 图像应用程序界面设计 2.1 命令按钮...
  • 要求:用vhdl语言设计一个图像处理系统,可完成以下功能1.嵌入功能:可将一幅256x256的彩色图像转为8位灰度图像,然后在该灰度图像的LSB比特面随机嵌入三个不同的二值序列;最后,将嵌入水印序列的灰度图像恢复为...
  • MATLAB课程设计--GUI图像处理

    热门讨论 2012-02-09 02:15:47
    利用matlab的GUI程序设计一个简单实用的图像处理程序。该程序应具备图像处理的常用功能,以满足用户的使用。现设计程序有以下基本功能: 1)图像的读取和保存。 2)设计图形用户界面,让用户能够对图像进行任意的...
  • VC++图像处理程序设计 光盘源码

    热门讨论 2008-01-11 22:13:23
    主要内容包括:位图基础、图像的显示、图像的几何变换、图像灰度变换、图像的平滑处理、图像锐化处理及边缘检测、图像分割及测量、图像的形态学处理、图像的变换域处理及应用、图像的合成、24位彩色图像的处理、JPEC...
  • 数字图像处理课程设计

    千次阅读 2011-01-27 13:29:00
    课程设计报告 一、图像处理基本功能 普通傅里叶变换(ft)与逆变换(ift)、快速傅里叶变换(fft)与逆变换(ifft)、离散余弦变换(DCT),小波变换;数字图像直方图的统计及绘制等;图像平滑算法实现...
  • 图像处理算法 FPGA实现研究 毕业设计 论文 图像处理算法 FPGA实现研究 毕业设计 论文 图像处理算法 FPGA实现研究 毕业设计 论文 图像处理算法 FPGA实现研究 毕业设计 论文 图像处理算法 FPGA实现研究 毕业设计 论文
  • 论文分别为彩色图像数字水印的研究与实现、基于DCT变换的图像水印嵌入技术、基于VC++ 的图像处理程序设计与开发、基于VC的图像边缘检测算法的研究与比较、基于图像纹理性质的图像修复研究、神经网络图象识别技术研究...
  • 图像处理中的滤波器设计

    千次阅读 2012-11-16 12:44:58
    图像处理中的滤波器设计 在傅里叶变换中,低频决定图像再平滑区域中总体灰度级的显示,而高频决定图像细节部分。是低频通过而使高频衰减的滤波器称为“低通滤波器”;具有相反特性的滤波器称为“高通滤波器”。被低...
  • 最近想把以前做过的数字图像处理实习写成一个教程,用的是CBmpFile类,武汉大学遥感信息工程学院的学生也许都会用这个类来实现图像处理,废话就不多说了,直接开始吧。。。  一、图像的显示  VC6.0工程向导创建MFC...
  • 如何利用MATLAB提供GUI界面实现数字图像处理系统的设计?最近无事,分享一下本科做的简单的GUI界面的图像处理系统及详细的学习笔记。本资源充分利用MATLAB GUI界面设计用户操作界面包含了基本的数字图像处理功能实现...
  • 基于matlab的数字图像处理软件设计

    千次阅读 多人点赞 2020-06-21 17:51:47
    功能介绍2.1基本操作2.2图像类型变换2.3图形几何变换2.4图像变换2.5图像添加噪声2.6图像复原2.7图像增强2.8图像分割2.9图像编码2.10二值形态学处理2.11小波图像处理2.12数字图像处理应用3. 项目总结 1.总体功能概述 ...
  • 图像式物体尺寸测量算法设计

    千次阅读 2019-10-14 10:29:36
    目标:设计算法,根据一系列二维图像估计图中待测矩形物体的几何尺寸。 要求:误差小,运行速度快,占内存小,嵌入式平台,产品成本不能太高。 最近接到领导任务,要求评估根据二维图像测量物体尺寸的算法可行...
  • Matlab数字图像处理系统GUI实例设计(全)

    千次阅读 多人点赞 2021-03-13 01:12:13
    以数字图像处理系统设计为例,介绍GUI系统的设计流程,同时提供两者的设计经验,如需详细了解,请下载相关资源。 数字图像处理系统 该系统基本涵盖了所有需要实现的图像处理功能: 灰度化变换、剪切、加噪和模糊...
  • 自适应图像降噪滤波器的设计与实现

    万次阅读 多人点赞 2017-06-16 11:16:36
    几乎所有真正有价值的图像降噪方法都在试图让程序可以自适应地区隔无用的噪声和有用的图像纹理细节,然后再采取不同的处理方式,从而实现details preserving(或者edge preserving)。目前这样的方法已有很多,例如...
  • 1.系统设计 1.1概念介绍 1.1.1图像颜色特征 颜色特征是在图像检索中应用最为广泛的视觉特征,主要原因在于颜色往往和图像中所包含的物体或场景十分相关。此外,颜色特征对图像本身的尺寸、方向、视角的依赖性较小...
  • HTML图像标记

    千次阅读 2015-11-27 16:50:55
    今天看到的丰富多彩的网页,都是因为有了图像的作用。...JPEG(Joint Photographic Experts Group)是特别为照片图像设计的文件格式。JPEG支持数百万种色彩。JPEG是质量有损耗的格式,这意味着在压缩时一些图像数据
  • 基于图像识别的火灾检测系统设计

    千次阅读 多人点赞 2020-10-15 20:49:43
    以前做过的一个设计,简单记录下!! 【摘要】 火象征着人类文明,推动着人类文明的进步。对人来说,火是利弊同时存在的,当我们控制不住时会酿成火灾,会对我们造成巨大损失。传统感烟式传感器探测时间长,不能及时...
  • 电子工业出版社储备的《 MATLAB应用实例精讲:图像处理与GUI设计篇》 pdf 扫描版
  • 基于FPGA视频图像处理系统设计

    万次阅读 多人点赞 2016-11-28 15:47:18
    本报告给出一个基于FPGA+两片DDR2组成的核心板、带有4路视频输入和VGA接口的开发板进行的视频图像采集和处理系统的设计。使用TW2867进行视频输入信号的编码,存储到DDR2中,通过FPGA和ARM的联合控制,通过I2C总线...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 404,562
精华内容 161,824
关键字:

图像设计