2011-04-12 13:48:00 sandy7 阅读数 1389

第七届SPIE多谱图像处理与模式识别国际学术会议征文通知

2011114~116   中国·桂林

多谱图像处理与模式识别国际学术会议是国际光学工程学会(SPIE)与中国联合组织的国际学术会议,已成功召开了六届(1998.武汉;2001.武汉;2003.北京;2005.武汉;2007.武汉;2009.宜昌),成为SPIE在我国举办的规模最大的国际会议。继第六届会议在宜昌取得圆满成功之后,第七届SPIE多谱图像处理与模式识别国际学术会议计划于201111月在桂林举行。大会将为从事多谱图像处理与模式识别领域研究的专家、教授、工程技术人员和研究生提供一个相互学习和交流的国际性论坛。为了提高会议的学术水平,会议将特邀国内外知名专家就本领域前沿作专题报告。大会工作语言为英语,议论文集将由美国SPIE正式出版,并将被EIISTP检索,欢迎大家积极投稿,参加会议。

征文范围(包括但不局限于)


1.     多谱图像获取

§   红外成像

§   微波成像

§   雷达和激光雷达成像

§   超声波成像

§   多谱与高光谱成像

§   医学成像

§   偏振光成像

§   液晶成像

§   微纳成像

§   单光子成像

§   超快成像

2.     多谱图像处理与分析

§   图像滤波

§   图像压缩

§   图像编码

§   数字水印

§   微波图像处理

§   雷达和激光雷达图像处理

§   超声波图像处理

§   多谱与高光谱图像处理

§   小波与分形分析

3.     自动目标识别与导航

§   边缘检测

§   图像分割

§   目标识别与跟踪

§   图像序列分析

§   弱小目标检测

§   图像特征提取

§   图像导航

4.     模式识别与计算机视觉

§   模式分类

§   神经网络

§   机器视觉

§   数据融合与挖掘

§   图像匹配

§   3D建模与重建

5.     图像并行处理和优化技术

§   并行算法和结构

§   智能算法

§   仿生算法

§   神经计算

§   优化方法和技术

6.     医学图像处理

§   医学图像处理和分析

§   医学图像可视化

§   医学图像引导手术

§   医学图像虚拟现实

§   计算机辅助医疗系统

7.     遥感图像处理与地理信息系统

§   遥感图像预处理

§   高光谱图像处理

§   遥感图像融合

§   地理信息系统

§   图像检索

8.     应用

§   智能视频监控

§   工业检测

§   环境监测

§   文化遗产保护

§   生物特征识别

§   其他应用

 


重要日期:

论文摘要截止时间:2011510

通知摘要接收时间2011615

正式论文截止时间:2011815

论文摘要格式(Summary):

Title of Conference:(See 1-8 above)

Paper title:

Authors and Institution:

Corresponding author:

Purpose:

Methods:

Results:

Conclusions:

Resume:(less than 150 words)

论文摘要提交须知:

登陆http://iprai.hust.edu.cn/mippr通过相应的链接进入SPIE官方网站,或直接登陆SPIE官方网站http://spie.org注册后进行投稿。投稿时请慎重选择八个主题之一并仅向该主题投稿,切忌一稿多投,否则稿件视为无效。

SPIE为了保证会议论文质量,要求仅能收录10篇以硕士研究生为第一作者的文章,所以,本次会议原则上不接收以硕士研究生为第一作者的文章(特别优秀的除外,但在投稿时务必注明)。

 

会议组委会联系方式:

1、 邮寄地址:武汉华中科技大学科技楼902室图像识别与人工智能研究所MIPPR 2011秘书处 [邮编430074]  联系人:张发雄

2、 电话:+86-27-87540131         传真:+86-27-87540131

3、 Emailmippr@126.com

4、 大会网址:http://iprai.hust.edu.cn/mippr/(教育网)  

 

第七届SPIE多谱图像处理与模式识别国际学术会议组委会

2012-04-17 23:19:14 xiaojiang0805 阅读数 10052

最近一直研究图像处理与模式识别的问题,通过同高手的交流,结合牛人的指点,现把自己的感受和体会跟大家分享,尤其是目标检测与识别这一块,如有不对的地方,希望高手指点一下!

 

如果有读关于目标检测和识别西文文献比较多的朋友,一定能够发现大多数的文献检测和识别的目标都是如下两类:人脸、汽车。但是对于类内差异较大的物体类,研究其检测与识别的文献并不多见。由此,引发了我的几点思考,和诸位共享。
首先:人脸是一类类内差异很小的目标,什么叫类内差异呢?我们可以这样理解:就是说它的configuration是不变的。不管是什么人种,都是两眼一鼻一嘴构成,因此对他的检测,采用模板匹配、Hmm、 基于Fragment的方法都可以达到较好的效果。然而,我们会发现,对人脸的识别研究的方法就寥寥可数了。人脸对于识别来说,他的类内差异就是相当大。目前在工程上最为有效的方法就是模板匹配,图像中的人脸和人脸库中的图像一一匹配,相似度最大的即为该人。同样,汽车也是一类类内差异不大的物体,它的显著且不变性特征就是车轮。车身可能万变,但车轮都如出一辙。因此,在图像中若能较好的检测出车轮,也就能检测到车辆了。


其次:为什么研究其他类目标的文献并不多见呢?难度大。难度大的原因就是要找出恒一不变的特征很难。比如:刚性物体——水杯。水杯的种类万千,要找出他们的共性不容易。柔性物体之类的则更加了。比如:检测树。


最后:给出我的一点研究启发:

          第一,在研究课题之前,一定要选择好研究的图像目标。其实也可以是大家都在研究的一类物体,并不需要标新立异,当然如果你有针对这类目标的好的检测方法,那也是惟愿如此。

         第二,并不一定要求你的方法放之四海皆准,只需要对某一类目标有效果,你同样可以发高水平的文章。

         第三,多尝试从数学的角度去理解图像的机理,从美术家的角度去理解图像的构造。

 

2017-07-20 17:15:25 jt674106399 阅读数 2076

算法原理

1.直方图均衡

直方图均衡化的基本思想是把原始图像的直方图变换为均匀分布的形式。这样增加了灰度值的动态范围,从而达到增强图像整体对比度的效果。

1)计算图像f(x,y)的各灰度级中像素出现的概率p(i)。

p(i)=nin,i=0,1,...,L1(L)

2) 计算p的累计概率函数c(i),c即为图像的累计归一化直方图

c(i)=j=0ip(xj)

3)将c(i)缩放至0~255范围内

y(i)=255c(i)

2.灰度拉伸

灰度拉伸属于线性点运算的一种。灰度拉伸。也称对比度拉伸,是一种简单的线性点运算。它扩展图像的直方图,使其充满整个灰度级范围内。
设f(x,y)为输入图像,它的最小灰度级A和最大灰度级B的定义,如下:

A=min[f(x,y)]
B=max[f(x,y)]

将A和B分别线性映射到0和255,最终得到的图像g(x,y)为:
g(x,y)=(255BA)[f(x,y)A]

源码解读

1.直方图均衡

首先对全图进行遍历,统计各灰度值出现的频数

 /*扫描全图,统计各灰度级出现的概率*/
void scanimg(Mat &src){
    NUM = src.rows * src.cols;
    int nr = src.rows;
    int nc = src.cols * src.channels();
    for (int i = 0; i < nr; i++){
        uchar *data = src.ptr<uchar>(i);
        for (int j = 0; j < nc; j++){
            counts[data[j]] ++;
        }
    }
    for (int i = 0; i < 256; i++){
        change[i] = tween(i);
    }
}

然后计算累积概率,即变换函数

/*计算累积概率*/
double tween(int k){
    int res = 0;
    for (int i = 0; i <= k; i++){
        res += counts[i];
    }
    return (double)res / NUM;
}

为了避免重复运算,我设置了一张转换表change将转换值预存

for (int i = 0; i < 256; i++){
        change[i] = tween(i);
}

然后再次遍历全图,用已经处理好的转换表对所有像素进行转换

/*灰度直方图均衡*/
void myEqualizeHist(Mat &src){
    scanimg(src);
    int nr = src.rows;
    int nc = src.cols * src.channels();
    for (int i = 0; i < nr; i++){
        uchar * data = src.ptr<uchar>(i);
        for (int j = 0; j < nc; j++){
            data[j] = 255 * change[data[j]];
        }
    }
}

2.灰度拉伸

首先第一步直方图均衡一样,也是统计各灰度出现的频数

/*扫描全图,统计各灰度级出现的概率*/
void scanimg(Mat &src){
    int nr = src.rows;
    int nc = src.cols * src.channels();
    for (int i = 0; i < nr; i++){
        uchar *data = src.ptr<uchar>(i);
        for (int j = 0; j < nc; j++){
            counts[data[j]] ++;
        }
    }

然后统计最低灰度值与最高灰度值,由于高光部分的灰度值并不为0但数值较小,为了让效果更明显,我认为限定了阈值为105

for (int i = 0; i < 256; i++){
        if (counts[i] > 105){
            a = i;
            break;
        }
    }
    for (int i = 0; i < 256;i++)
        if (counts[255 - i] > 105){
            b = 255 - i;
            break;
        }

由于灰度拉伸的结果是全等级,因而将原计算公式化简为255/(a-b) *(f(x,y) -a)
得到转换函数:

double  tween(int k){
    double t = 255.0 / (b - a)*(k - a);
    return t;
}

最后遍历全图对每个像素进行转换:

void myProc(Mat &src){
    scanimg(src);
    int nr = src.rows;
    int nc = src.cols * src.channels();
    for (int i = 0; i < nr; i++){
        uchar * data = src.ptr<uchar>(i);
        for (int j = 0; j < nc; j++){
            data[j] = tween(data[j]);
        }
    }
}

3.RGB三通道拉伸

计算方法基本与灰度拉伸一样,只不过需要对三通道的像素值分别进行一次计算,统计时也需要分开单独统计,不过由于三个通道的像素值分布是不同的,因此阈值也分别根据统计情况设置为300、105和200
Markdown

结果分析

1.直方图均衡

MarkdownMarkdown
MarkdownMarkdown

2.灰度拉伸

MarkdownMarkdown
MarkdownMarkdown

3.RGB拉伸

MarkdownMarkdown
MarkdownMarkdown

个人讨论

通过本次大作业掌握了最最基础的图像处理方法,过程中遇到了不少小问题,比如转换函数的计算要用浮点不能用整型,opencv中RGB三通道的排列是反的等等。
从结果来看,直方图均衡和灰度拉伸的效果差异非常大,灰度拉伸显得更加自然,而直方图均衡则有些失真。因此这也解释了为什么它们的应用场景也有所不同,直方图均衡多用于图像增强,显示出一些不易发现的细节,而灰度拉伸则类似于PS中的亮度提升。

完整代码

/*
灰度直方图均衡
author: Billow_Tau
编译环境:Visual Studio 2013
第三方库:opencv
*/

#include <iostream>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>

using namespace std;
using namespace cv;

int counts[256] = { 0 };
double change[256] = { 0 };
int NUM;
int a = 0, b = 128;

void myShowHist(Mat src, MatND hist){
    int bins = 256;
    int hist_size[] = { bins };
    float range[] = { 0, 256 };
    const float* ranges[] = { range };

    int planes[] = { 0 };

    calcHist(&src, 1, planes, Mat(), hist, 1, hist_size, ranges, true, false);

    int hist_h = 256;
    double max_val;
    int scale = 2;
    minMaxLoc(hist, 0, &max_val, 0, 0);

    Mat hist_img = Mat::zeros(hist_h, bins * scale, CV_8UC3);

    for (int i = 0; i < bins; i++){
        float bin_val = hist.at<float>(i);
        int intensity = cvRound(bin_val* hist_h/ max_val);
        rectangle(hist_img, Point(i*scale, hist_h-1), Point((i+1)*scale -1, hist_h - intensity), CV_RGB(255,255,255));
    }

    imshow("GRAY", hist_img);
    //imwrite("hist_src.png",hist_img);
}

/*计算累积概率*/
double tween(int k){
    int res = 0;
    for (int i = 0; i <= k; i++){
        res += counts[i];
    }
    return (double)res / NUM;
}

/*扫描全图,统计各灰度级出现的概率*/
void scanimg(Mat &src){
    NUM = src.rows * src.cols;
    int nr = src.rows;
    int nc = src.cols * src.channels();
    for (int i = 0; i < nr; i++){
        uchar *data = src.ptr<uchar>(i);
        for (int j = 0; j < nc; j++){
            counts[data[j]] ++;
        }
    }
    for (int i = 0; i < 256; i++){
        change[i] = tween(i);
    }
}

/*灰度直方图均衡*/
void myEqualizeHist(Mat &src){
    scanimg(src);
    int nr = src.rows;
    int nc = src.cols * src.channels();
    for (int i = 0; i < nr; i++){
        uchar * data = src.ptr<uchar>(i);
        for (int j = 0; j < nc; j++){
            data[j] = 255 * change[data[j]];
        }
    }
}

int main(){

    Mat img;
    MatND hist2;
    img = imread("D:\\opencv\\project\\test1.jpg", 1);

    if (img.empty()){
        return -1;
    }

    cvtColor(img, img, CV_BGR2GRAY);

    //myEqualizeHist(img);

    myShowHist(img, hist2);

    //imwrite("src.png",img);

    namedWindow("MyWindow", CV_WINDOW_NORMAL);
    imshow("MyWindow", img);
    waitKey(0);

    return 0;
}
/*
灰度拉伸
author: Billow_Tau
编译环境:Visual Studio 2013
第三方库:opencv
*/

#include <iostream>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>

using namespace std;
using namespace cv;

int counts[256] = { 0 };
int a = 0, b = 255;

void myShowHist(Mat src, MatND hist){
    int bins = 256;
    int hist_size[] = { bins };
    float range[] = { 0, 256 };
    const float* ranges[] = { range };

    int planes[] = { 0 };

    calcHist(&src, 1, planes, Mat(), hist, 1, hist_size, ranges, true, false);

    int hist_h = 256;
    double max_val;
    int scale = 2;
    minMaxLoc(hist, 0, &max_val, 0, 0);

    Mat hist_img = Mat::zeros(hist_h, bins * scale, CV_8UC3);

    for (int i = 0; i < bins; i++){
        float bin_val = hist.at<float>(i);
        int intensity = cvRound(bin_val* hist_h / max_val);
        rectangle(hist_img, Point(i*scale, hist_h - 1), Point((i + 1)*scale - 1, hist_h - intensity), CV_RGB(255, 255, 255));
    }

    imshow("GRAY", hist_img);
    //imwrite("hist_dst2.png",hist_img);
}

double  tween(int k){
    double t = 255.0 / (b - a)*(k - a);
    return t;
}

/*扫描全图,统计各灰度级出现的概率*/
void scanimg(Mat &src){
    int nr = src.rows;
    int nc = src.cols * src.channels();
    for (int i = 0; i < nr; i++){
        uchar *data = src.ptr<uchar>(i);
        for (int j = 0; j < nc; j++){
            counts[data[j]] ++;
        }
    }
    /*for (int i = 0; i<256; i++)
        cout << counts[i] << ' ';
    cout << '\n' << endl;*/
    for (int i = 0; i < 256; i++){
        if (counts[i] > 105){
            a = i;
            break;
        }
    }
    for (int i = 0; i < 256;i++)
        if (counts[255 - i] > 105){
            b = 255 - i;
            break;
        }
}

void myProc(Mat &src){
    scanimg(src);
    int nr = src.rows;
    int nc = src.cols * src.channels();
    for (int i = 0; i < nr; i++){
        uchar * data = src.ptr<uchar>(i);
        for (int j = 0; j < nc; j++){
            data[j] = tween(data[j]);
        }
    }
}

int main(){

    Mat img;
    MatND hist2;
    img = imread("D:\\opencv\\project\\test1.jpg", 1);

    if (img.empty()){
        return -1;
    }

    cvtColor(img, img, CV_BGR2GRAY);

    myProc(img);

    myShowHist(img, hist2);

    //imwrite("dst2.png",img);

    namedWindow("MyWindow", CV_WINDOW_NORMAL);
    imshow("MyWindow", img);
    waitKey(0);

    return 0;
}
/*
RGB拉伸
author: Billow_Tau
编译环境:Visual Studio 2013
第三方库:opencv
*/

#include <iostream>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>

using namespace std;
using namespace cv;

int Rcounts[256] = { 0 };
int Gcounts[256] = { 0 };
int Bcounts[256] = { 0 };
int Ra = 0, Rb = 255;
int Ga = 0, Gb = 255;
int Ba = 0, Bb = 255;

void myShowHist(Mat src){
    /// 分割成3个单通道图像 ( R, G 和 B )
    vector<Mat> rgb_planes;
    split(src, rgb_planes);

    /// 设定bin数目
    int histSize = 255;

    /// 设定取值范围 ( R,G,B) )
    float range[] = { 0, 255 };
    const float* histRange = { range };

    bool uniform = true; bool accumulate = false;

    Mat r_hist, g_hist, b_hist;

    /// 计算直方图:
    calcHist(&rgb_planes[0], 1, 0, Mat(), r_hist, 1, &histSize, &histRange, uniform, accumulate);
    calcHist(&rgb_planes[1], 1, 0, Mat(), g_hist, 1, &histSize, &histRange, uniform, accumulate);
    calcHist(&rgb_planes[2], 1, 0, Mat(), b_hist, 1, &histSize, &histRange, uniform, accumulate);

    // 创建直方图画布
    int hist_w = 400; int hist_h = 400;
    int bin_w = cvRound((double)hist_w / histSize);

    Mat histImage(hist_w, hist_h, CV_8UC3, Scalar(0, 0, 0));

    /// 将直方图归一化到范围 [ 0, histImage.rows ]
    normalize(r_hist, r_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());
    normalize(g_hist, g_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());
    normalize(b_hist, b_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());

    /// 在直方图画布上画出直方图
    for (int i = 1; i < histSize; i++)
    {
        line(histImage, Point(bin_w*(i - 1), hist_h - cvRound(r_hist.at<float>(i - 1))),
            Point(bin_w*(i), hist_h - cvRound(r_hist.at<float>(i))),
            Scalar(0, 0, 255), 2, 8, 0);
        line(histImage, Point(bin_w*(i - 1), hist_h - cvRound(g_hist.at<float>(i - 1))),
            Point(bin_w*(i), hist_h - cvRound(g_hist.at<float>(i))),
            Scalar(0, 255, 0), 2, 8, 0);
        line(histImage, Point(bin_w*(i - 1), hist_h - cvRound(b_hist.at<float>(i - 1))),
            Point(bin_w*(i), hist_h - cvRound(b_hist.at<float>(i))),
            Scalar(255, 0, 0), 2, 8, 0);
    }

    /// 显示直方图
    namedWindow("calcHist Demo", CV_WINDOW_AUTOSIZE);
    imshow("calcHist Demo", histImage);
    //imwrite("hist_rgb_dst.png", histImage);
}

double  tween(int k, int select){
    double t;
    switch (select){
    case 2:
        t = 255.0 / (Rb - Ra)*(k - Ra);
        break;
    case  1:
        t = 255.0 / (Gb - Ga)*(k - Ga);
        break;
    case 0:
        t = 255.0 / (Bb - Ba)*(k - Ba);
        break;
    }
    return t;
}

/*扫描全图,统计各通道出现的概率*/
void scanimg(Mat &src){
    int nr = src.rows;
    int nc = src.cols * src.channels();
    for (int i = 0; i < nr; i++){
        uchar *data = src.ptr<uchar>(i);
        for (int j = 0; j < nc; j+=3){
            Rcounts[data[j + 2]] ++;
            Gcounts[data[j + 1]]++;
            Bcounts[data[j]]++;
        }
    }
    for (int i = 0; i<256; i++)
        cout << Rcounts[i] << ' ';
    cout << '\n' << endl;
    for (int i = 0; i<256; i++)
        cout << Gcounts[i] << ' ';
    cout << '\n' << endl;
    for (int i = 0; i<256; i++)
    cout << Bcounts[i] << ' ';
    cout << '\n' << endl;
    for (int i = 0; i < 256; i++)
        if (Rcounts[i] > 300){Ra = i;break;}
    for (int i = 0; i < 256; i++)
        if (Gcounts[i] > 105){ Ga = i; break; }
    for (int i = 0; i < 256; i++)
        if (Bcounts[i] > 200){ Ba = i; break; }
    for (int i = 0; i < 256; i++)
        if (Rcounts[255 - i] > 300){Rb = 255 - i;break;}
    for (int i = 0; i < 256; i++)
        if (Gcounts[255 - i] > 105){ Gb = 255 - i; break; }
    for (int i = 0; i < 256; i++)
        if (Bcounts[255 - i] > 200){ Bb = 255 - i; break; }
}

void myProc(Mat &src){
    scanimg(src);
    int nr = src.rows;
    int nc = src.cols * src.channels();
    for (int i = 0; i < nr; i++){
        uchar * data = src.ptr<uchar>(i);
        for (int j = 0; j < nc; j+=3){
            data[j+2] = tween(data[j+2],2);
            data[j + 1] = tween(data[j + 1], 1);
            data[j] = tween(data[j], 0);
        }
    }
}

int main(){

    Mat img;
    img = imread("D:\\opencv\\project\\test1.jpg", 1);

    if (img.empty()){
        return -1;
    }

    //cvtColor(img, img, CV_BGR2GRAY);

    myProc(img);

    myShowHist(img);

    //imwrite("dst_rgb.png",img);

    namedWindow("MyWindow", CV_WINDOW_NORMAL);
    imshow("MyWindow", img);
    waitKey(0);

    return 0;
}
2016-10-27 16:53:46 linghugoogle 阅读数 2418

《模式识别及其在图像处理中的应用》

1、模式识别基本框架

一般认为,模式识别是通过具体的事物进行观测所得到的具有时间、空间分布的信息,模式所属的类别或同一类中模式的总体成为模式类,其中个别具体的模式往往成为样本。

样本——预处理——特征选择和提取——分类器设计&&分类结果

【由上述分析可知,模式识别本身就是将特征空间映射为选择空间,将多维特征降维以减小复杂度,增加鲁棒性】

2、特征提取和选择

特征提取是指通过映射的方法用低维空间来表示样本的过程,特征提取后样本的可分性应该更好。常用方法:主元分析(PCA)、线性判别分析、核函数主元分析(Kernel PCA)、独立主元分析(ICA)、自组织映射(SOM)

特征提取后的各个特征的物理意义有时不是很明确,往往很难看出各个特征对分类器的影响,有的甚至有副作用。因此要在这些特征中选择一部分,这就是特征选择。

为了判断提取和选择的特征对分类的有效性,人们提出各种衡量特征分类性能的判据。最直接最有效的盘踞是计算分类器错误概率,但很难实现。最简单的判据是用于可用性判据的类内类间距离判据。

【由上述分析可知,提取和选择对算法性能有决定性的作用,具体操作上既可以通过有监督学习、也可以无监督的聚类分析;除此之外,判断标准很重要,只有有了判断标准,才能够对选择的算法进行衡量和改进,这是反馈】

3、模式识别的主要方法及其在图像处理中的应用

1)     统计决策法

以概率论和数理统计为基础,包括参数法和非参数法。参数法以Bayes决策准则为指导,其中最小错误率和最小风险贝叶斯决策是最常用的决策方法。参数估计方法在样本数据趋于无穷大时渐进理论,然而实际条件往往达不到。在样本数量有限的时候,往往根据样本直接设计分类器,这就是非参数方法。这类方法物理意义直观,但所得的结果和错误率往往没有直接联系。所设计的分类器不能保证最优。比较典型的有线性分类器、最近邻方法、K均值聚类发。

缺点:缺少结构信息。

2)     结构模式分析

利用模式的结构描述与句法描述之间的相似性对模式进行分类,每个模式由它的各个子部分(称为子模式或者模式基元)的组合来表示。对模式的识别常以句法分析的方式进行,即依据给定的一组句法规则来剖析模式的结构。当模式中的每一个基元被分辨出来后,识别过程就可通过执行语法分析来实现。

3)     模糊模式识别

将非此即彼的0,1判断更改为隶属度函数。模糊模式识别的关键在隶属度函数的建立,目前的主要方法有模糊统计、模糊分布法、二元对比排序法、相对比较法和专家评分法。

4)     人工神经网络模式识别

定义:用软件或者硬件的方法,建立许多以大量处理单元为结点,处理单元实现(加权值的)互联的拓扑网络,进行模拟。

主要特点:信息处理的并行性、自组织和自适应性、具有很强的学习能力和联想功能以及容错性能。

4、模式识别的新进展及其在图像处理中的应用

1)     支持向量机

2)     仿生模式识别

【这是篇2004年的论文,并且文章是综述,所以对SVM和仿生模式讲得不是很清楚,接下来找些SVM的论文研究研究】

 

《模式识别方法概论》

【这是篇2012年的文章,讲的内容很多与上面的文章有重复,所以不再每小节摘录,只摘录感觉写得好的地方】

1、为提高识别结果的可靠性,往往需要加入知识库(规则)以对可能产生的错误进行修正,或者引入限制条件大大缩小待识别特征在模型库的搜索空间。

2、SVM基本思想:先在样本空间或特征空间,构造出最优超平面,使得超平面与不同类样本之间的距离最大,从而达到最大的泛化能力。



2019-06-11 13:43:28 qxqxqzzz 阅读数 38

1、OCR识别和字符切分算法改进;

2、图像处理算法研究。

 

 

1,连通域 腐蚀 膨胀定义、原理

 

2,gd sgd bgd:原理 区别

3,c++ 和 python 的区别

4,如何解决过拟合问题(训练集上表现好,测试集表现差)

5,图像处理算法与机器学习,非机器学习图像处理

6,ocr识别算法与机器学习,非机器学习ocr识别

7,字符切分算法与机器学习,非机器学习字符切分

8,

没有更多推荐了,返回首页