<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Programming/Cv on 风中飞舞</title><link>https://blog.perillaroc.wang/categories/programming/cv/</link><description>Recent content in Programming/Cv on 风中飞舞</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 30 Aug 2026 20:06:22 +0800</lastBuildDate><atom:link href="https://blog.perillaroc.wang/categories/programming/cv/index.xml" rel="self" type="application/rss+xml"/><item><title>数字图像处理笔记（三）：Color</title><link>https://blog.perillaroc.wang/post/2012/2012-06-11-e695b0e5ad97e59bbee5838fe5a484e79086e7ac94e8aeb0e4b889efbc9acolor/</link><pubDate>Mon, 11 Jun 2012 09:20:38 +0000</pubDate><guid>https://blog.perillaroc.wang/post/2012/2012-06-11-e695b0e5ad97e59bbee5838fe5a484e79086e7ac94e8aeb0e4b889efbc9acolor/</guid><description>&lt;p&gt;彩色，多通道图像。&lt;/p&gt;
&lt;p&gt;PPT大纲&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trichromacy&lt;/li&gt;
&lt;li&gt;Spectral matching functions&lt;/li&gt;
&lt;li&gt;CIE XYZ color system&lt;/li&gt;
&lt;li&gt;xy-chromaticity diagram&lt;/li&gt;
&lt;li&gt;Color gamut&lt;/li&gt;
&lt;li&gt;Color temperature&lt;/li&gt;
&lt;li&gt;Color balancing algorithms&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="彩色基础"&gt;彩色基础&lt;/h1&gt;
&lt;p&gt;辐射率、光强和亮度。光源色与颜料。亮度、色调、色饱和度。三原色。CIE色度图。&lt;/p&gt;
&lt;h1 id="彩色模型"&gt;彩色模型&lt;/h1&gt;
&lt;h2 id="rgb模型"&gt;RGB模型&lt;/h2&gt;
&lt;p&gt;稳定RGB彩色子集，无损web颜色，256-50=216种颜色，0,51,102,153,204,255。&lt;/p&gt;
&lt;h2 id="cmy和cmyk模型"&gt;CMY和CMYK模型&lt;/h2&gt;
&lt;h2 id="hsi彩色模型"&gt;HSI彩色模型&lt;/h2&gt;
&lt;p&gt;HSI与RGB颜色的相互转换&lt;/p&gt;
&lt;h1 id="伪彩色处理假彩色"&gt;伪彩色处理（假彩色）&lt;/h1&gt;
&lt;p&gt;灰度图着色。&lt;/p&gt;
&lt;h2 id="强度分层"&gt;强度分层&lt;/h2&gt;
&lt;p&gt;用平面切割，每个平面代表一个颜色。&lt;/p&gt;
&lt;h2 id="灰度级变换"&gt;灰度级变换&lt;/h2&gt;
&lt;p&gt;每通道执行一个独立的变换。&lt;br&gt;
彩色平衡。&lt;/p&gt;
&lt;h1 id="全彩色图像处理基础"&gt;全彩色图像处理基础&lt;/h1&gt;
&lt;p&gt;两种方法：一是分别处理每一个分量；二是直接处理彩色像素。&lt;/p&gt;
&lt;h1 id="彩色变换"&gt;彩色变换&lt;/h1&gt;
&lt;h1 id="补色"&gt;补色&lt;/h1&gt;
&lt;h1 id="彩色分层"&gt;彩色分层&lt;/h1&gt;
&lt;p&gt;突出显示感兴趣的颜色，由颜色立方体等确定颜色。&lt;/p&gt;
&lt;h2 id="色调和彩色校正"&gt;色调和彩色校正&lt;/h2&gt;
&lt;p&gt;CIELab模型。&lt;br&gt;
灰度变换。S型曲线：提高对比度；下凹曲线：变暗；上凸曲线：变亮。&lt;br&gt;
彩色平衡。&lt;/p&gt;
&lt;h2 id="直方图处理"&gt;直方图处理&lt;/h2&gt;
&lt;p&gt;均匀地扩散彩色强度，保持彩色本身（色调）不变。还需要增加饱和度分量，在进行直方图均衡化。&lt;/p&gt;
&lt;h1 id="平滑和尖锐化"&gt;平滑和尖锐化&lt;/h1&gt;
&lt;p&gt;彩色图像平滑：可以在分量图中进行。&lt;br&gt;
彩色图像尖锐化&lt;/p&gt;
&lt;h1 id="彩色分割"&gt;彩色分割&lt;/h1&gt;
&lt;p&gt;HSI彩色空间分割：饱和度做模板。&lt;br&gt;
RGB向量空间分割：相似性度量，欧氏距离。&lt;br&gt;
彩色边缘检测：不能由分量图像叠加而成。不用标量函数的梯度，而用向量函数的梯度。&lt;/p&gt;
&lt;h1 id="彩色图像的噪声"&gt;彩色图像的噪声&lt;/h1&gt;
&lt;p&gt;RGB通道噪声会扩散到所有的HSI通道。可以直接使用均值滤波器，但中值滤波器需要一个向量排序算法。&lt;/p&gt;
&lt;h1 id="彩色图像压缩"&gt;彩色图像压缩&lt;/h1&gt;</description></item><item><title>数字图像处理笔记（二）：Point Operations</title><link>https://blog.perillaroc.wang/post/2012/2012-06-08-e695b0e5ad97e59bbee5838fe5a484e79086e7ac94e8aeb0e4ba8cefbc9apoint-operations/</link><pubDate>Fri, 08 Jun 2012 11:10:05 +0000</pubDate><guid>https://blog.perillaroc.wang/post/2012/2012-06-08-e695b0e5ad97e59bbee5838fe5a484e79086e7ac94e8aeb0e4ba8cefbc9apoint-operations/</guid><description>&lt;h1 id="ppt大纲"&gt;PPT大纲&lt;/h1&gt;
&lt;p&gt;Relating gray values to brightness&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;
 Gray value quantization
&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;
 Weberʼs Law
&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;
 Gamma characteristic
&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;
 Adjusting brightness and contrast
&lt;/p&gt;
&lt;p&gt;Gray-level histograms and histogram equalization&lt;br&gt;
Point operations for combining images&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;
 Averaging
&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;
 Subtraction
&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;
 The need for image registration
&lt;/p&gt;
&lt;h1 id="详细笔记"&gt;详细笔记&lt;/h1&gt;
&lt;h2 id="灰度变换"&gt;灰度变换&lt;/h2&gt;
&lt;p&gt;反转&lt;br&gt;
对数：压缩或扩展动态范围&lt;br&gt;
幂次：对比度调整、亮度调整等&lt;br&gt;
分段线性：对比度拉伸、灰度切割、位图切割&lt;/p&gt;
&lt;h2 id="直方图"&gt;直方图&lt;/h2&gt;
&lt;p&gt;直方图均衡化&lt;br&gt;
直方图匹配（规定化）&lt;br&gt;
局部增强：邻域内计算。&lt;br&gt;
直方图统计（平均值、方差）：增强暗背景中的细节部分，保持亮部分不变。&lt;/p&gt;
&lt;h2 id="图像的算术运算"&gt;图像的算术运算&lt;/h2&gt;
&lt;p&gt;减法：突出变化的部分，增强差异，例子：血管造影术、掩膜式X光成像法&lt;br&gt;
平均值：去噪声，尤其是椒盐噪声。&lt;/p&gt;
&lt;h2 id="空间滤波"&gt;空间滤波&lt;/h2&gt;
&lt;p&gt;平滑空间滤波器&lt;br&gt;
线性滤波：均值滤波器（低通）&lt;br&gt;
统计排序：中值滤波器，去噪声&lt;br&gt;
锐化空间滤波器&lt;br&gt;
拉普拉斯算子：高频提升滤波&lt;br&gt;
梯度法&lt;/p&gt;</description></item><item><title>[音频格式] WAV音频格式</title><link>https://blog.perillaroc.wang/post/2012/2012-06-02-e99fb3e9a291e6a0bce5bc8f-wave99fb3e9a291e6a0bce5bc8f/</link><pubDate>Sat, 02 Jun 2012 15:28:55 +0000</pubDate><guid>https://blog.perillaroc.wang/post/2012/2012-06-02-e99fb3e9a291e6a0bce5bc8f-wave99fb3e9a291e6a0bce5bc8f/</guid><description>&lt;p&gt;这一周都在看音频加速播放的源代码，就了解下最简单的音频格式——WAV。wav格式和bmp格式差不多，文件开头是一个比较短的文件头，之后是大段的数据。wav中每采样点的数据是未经处理的&lt;/p&gt;
&lt;p&gt;&lt;a title="脉冲编码调制" href="//zh.wikipedia.org/wiki/%E8%84%88%E8%A1%9D%E7%B7%A8%E8%99%9F%E8%AA%BF%E8%AE%8A" target="_blank"&gt;PCM&lt;/a&gt;值，就像bmp格式的每个像素点的数据是调色板的编号或者是该点的RGB颜色值一样。音频数据每个采样点通常使用float类型处理（32bit？）。&lt;br&gt;
文件格式示例：&lt;/p&gt;
&lt;figure style="width: 612px" class="wp-caption alignnone"&gt;&lt;img title="WAVE音频文件格式" src="https://ccrma.stanford.edu/courses/422/projects/WaveFormat/wav-sound-format.gif" alt="" width="612" height="567" /&gt;&lt;figcaption class="wp-caption-text"&gt;WAVE文件格式说明&lt;/figcaption&gt;&lt;/figure&gt; 
简单来说，WAVE音频文件可以看作一个块（chunk）中包含两个或三个子块（sub-chunk）。 
起始的是RIFF主块，描述块（chunk）信息，包括文件类型和整个文件的大小等。 
接着是fmt子块（Format Chunk），描述数据的格式，例如采样频率、通道、每样本位数等等。其中某些编码方式还有一些额外的参数。 
接下来，非PCM格式的文件中有个fact子块。至少有一项，文件中的样本个数。 
最后是data子块，包含所有的音频数据。若最后的地址是奇数，就加上1字节0值对齐。 
详细资料参见下面两个网页，写得十分详细： 
&lt;a title="WAVE PCM soundfile format" href="https://ccrma.stanford.edu/courses/422/projects/WaveFormat/" target="_blank"&gt;WAVE PCM soundfile format&lt;/a&gt; 
&lt;a title="Audio File Format Specifications" href="//www-mmsp.ece.mcgill.ca/documents/audioformats/WAVE/WAVE.html" target="_blank"&gt;Audio File Format Specifications&lt;/a&gt; 
至于读取WAVE文件，我还没学会用windows或者DirectSound提供的方法，只是简单的定义几个结构，从wav文件中一一读出来，chunk头结构从网上找的。 
前几天看SoundTouch的代码，发现其中的SoundStretch项目中提供一个简单的wav文件读取类，可以作为参考。参见SoundTouch的项目主页：&lt;//www.surina.net/soundtouch/index.html&gt; 
wavefile.h 
[cpp] 
//////////////////////////////////////////////////////////////////////////////// 
/// 
/// Classes for easy reading &amp; writing of WAV sound files. 
/// 
/// For big-endian CPU, define BIG_ENDIAN during compile-time to correctly 
/// parse the WAV files with such processors. 
/// 
/// Admittingly, more complete WAV reader routines may exist in public domain, but 
/// the reason for &amp;#8216;yet another&amp;#8217; one is that those generic WAV reader libraries are 
/// exhaustingly large and cumbersome! Wanted to have something simpler here, i.e. 
/// something that&amp;#8217;s not already larger than rest of the SoundTouch/SoundStretch program&amp;#8230; 
/// 
/// Author : Copyright (c) Olli Parviainen 
/// Author e-mail : oparviai &amp;#8216;at&amp;#8217; iki.fi 
/// SoundTouch WWW: //www.surina.net/soundtouch 
/// 
//////////////////////////////////////////////////////////////////////////////// 
// 
// Last changed : $Date: 2009-02-21 18:00:14 +0200 (Sat, 21 Feb 2009) $ 
// File revision : $Revision: 4 $ 
// 
// $Id: WavFile.h 63 2009-02-21 16:00:14Z oparviai $ 
// 
//////////////////////////////////////////////////////////////////////////////// 
// 
// License : 
// 
// SoundTouch audio processing library 
// Copyright (c) Olli Parviainen 
// 
// This library is free software; you can redistribute it and/or 
// modify it under the terms of the GNU Lesser General Public 
// License as published by the Free Software Foundation; either 
// version 2.1 of the License, or (at your option) any later version. 
// 
// This library is distributed in the hope that it will be useful, 
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
// Lesser General Public License for more details. 
// 
// You should have received a copy of the GNU Lesser General Public 
// License along with this library; if not, write to the Free Software 
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
// 
//////////////////////////////////////////////////////////////////////////////// 
#ifndef WAVFILE_H 
#define WAVFILE_H 
#include &lt;stdio.h&gt; 
#ifndef uint 
typedef unsigned int uint; 
#endif 
/// WAV audio file &amp;#8216;riff&amp;#8217; section header 
typedef struct 
{ 
char riff_char[4]; 
int package_len; 
char wave[4]; 
} WavRiff; 
/// WAV audio file &amp;#8216;format&amp;#8217; section header 
typedef struct 
{ 
char fmt[4]; 
int format_len; 
short fixed; 
short channel_number; 
int sample_rate; 
int byte_rate; 
short byte\_per\_sample; 
short bits\_per\_sample; 
} WavFormat; 
/// WAV audio file &amp;#8216;data&amp;#8217; section header 
typedef struct 
{ 
char data_field[4]; 
uint data_len; 
} WavData; 
/// WAV audio file header 
typedef struct 
{ 
WavRiff riff; 
WavFormat format; 
WavData data; 
} WavHeader; 
/// Class for reading WAV audio files. 
class WavInFile 
{ 
private: 
/// File pointer. 
FILE *fptr; 
/// Counter of how many bytes of sample data have been read from the file. 
uint dataRead; 
/// WAV header information 
WavHeader header; 
/// Init the WAV file stream 
void init(); 
/// Read WAV file headers. 
/// \return zero if all ok, nonzero if file format is invalid. 
int readWavHeaders(); 
/// Checks WAV file header tags. 
/// \return zero if all ok, nonzero if file format is invalid. 
int checkCharTags() const; 
/// Reads a single WAV file header block. 
/// \return zero if all ok, nonzero if file format is invalid. 
int readHeaderBlock(); 
/// Reads WAV file &amp;#8216;riff&amp;#8217; block 
int readRIFFBlock(); 
public: 
/// Constructor: Opens the given WAV file. If the file can&amp;#8217;t be opened, 
/// throws &amp;#8216;runtime_error&amp;#8217; exception. 
WavInFile(const char *filename); 
WavInFile(FILE *file); 
/// Destructor: Closes the file. 
~WavInFile(); 
/// Rewind to beginning of the file 
void rewind(); 
/// Get sample rate. 
uint getSampleRate() const; 
/// Get number of bits per sample, i.e. 8 or 16. 
uint getNumBits() const; 
/// Get sample data size in bytes. Ahem, this should return same information as 
/// &amp;#8216;getBytesPerSample&amp;#8217;&amp;#8230; 
uint getDataSizeInBytes() const; 
/// Get total number of samples in file. 
uint getNumSamples() const; 
/// Get number of bytes per audio sample (e.g. 16bit stereo = 4 bytes/sample) 
uint getBytesPerSample() const; 
/// Get number of audio channels in the file (1=mono, 2=stereo) 
uint getNumChannels() const; 
/// Get the audio file length in milliseconds 
uint getLengthMS() const; 
/// Reads audio samples from the WAV file. This routine works only for 8 bit samples. 
/// Reads given number of elements from the file or if end-of-file reached, as many 
/// elements as are left in the file. 
/// 
/// \return Number of 8-bit integers read from the file. 
int read(char *buffer, int maxElems); 
/// Reads audio samples from the WAV file to 16 bit integer format. Reads given number 
/// of elements from the file or if end-of-file reached, as many elements as are 
/// left in the file. 
/// 
/// \return Number of 16-bit integers read from the file. 
int read(short *buffer, ///&lt; Pointer to buffer where to read data. int maxElems ///&lt; Size of 'buffer' array (number of array elements). ); /// Reads audio samples from the WAV file to floating point format, converting /// sample values to range [-1,1[. Reads given number of elements from the file /// or if end-of-file reached, as many elements as are left in the file. /// /// \return Number of elements read from the file. int read(float *buffer, ///&lt; Pointer to buffer where to read data. int maxElems ///&lt; Size of 'buffer' array (number of array elements). ); /// Check end-of-file. /// /// \return Nonzero if end-of-file reached. int eof() const; }; /// Class for writing WAV audio files. class WavOutFile { private: /// Pointer to the WAV file FILE \*fptr; /// WAV file header data. WavHeader header; /// Counter of how many bytes have been written to the file so far. int bytesWritten; /// Fills in WAV file header information. void fillInHeader(const uint sampleRate, const uint bits, const uint channels); /// Finishes the WAV file header by supplementing information of amount of /// data written to file etc void finishHeader(); /// Writes the WAV file header. void writeHeader(); public: /// Constructor: Creates a new WAV file. Throws a 'runtime_error' exception /// if file creation fails. WavOutFile(const char \*fileName, ///&lt; Filename int sampleRate, ///&lt; Sample rate (e.g. 44100 etc) int bits, ///&lt; Bits per sample (8 or 16 bits) int channels ///&lt; Number of channels (1=mono, 2=stereo) ); WavOutFile(FILE \*file, int sampleRate, int bits, int channels); /// Destructor: Finalizes &amp; closes the WAV file. ~WavOutFile(); /// Write data to WAV file. This function works only with 8bit samples. /// Throws a 'runtime_error' exception if writing to file fails. void write(const char \*buffer, ///&lt; Pointer to sample data buffer. int numElems ///&lt; How many array items are to be written to file. ); /// Write data to WAV file. Throws a 'runtime_error' exception if writing to /// file fails. void write(const short *buffer, ///&lt; Pointer to sample data buffer. int numElems ///&lt; How many array items are to be written to file. ); /// Write data to WAV file in floating point format, saturating sample values to range /// [-1..+1[. Throws a 'runtime_error' exception if writing to file fails. void write(const float *buffer, ///&lt; Pointer to sample data buffer. int numElems ///&lt; How many array items are to be written to file. ); }; #endif [/cpp] wavefile.cpp [cpp] //////////////////////////////////////////////////////////////////////////////// /// /// Classes for easy reading &amp; writing of WAV sound files. /// /// For big-endian CPU, define \_BIG\_ENDIAN_ during compile-time to correctly /// parse the WAV files with such processors. /// /// Admittingly, more complete WAV reader routines may exist in public domain, /// but the reason for 'yet another' one is that those generic WAV reader /// libraries are exhaustingly large and cumbersome! Wanted to have something /// simpler here, i.e. something that's not already larger than rest of the /// SoundTouch/SoundStretch program... /// /// Author : Copyright (c) Olli Parviainen /// Author e-mail : oparviai 'at' iki.fi /// SoundTouch WWW: //www.surina.net/soundtouch /// //////////////////////////////////////////////////////////////////////////////// // // Last changed : $Date: 2011-07-16 11:46:37 +0300 (Sat, 16 Jul 2011) $ // File revision : $Revision: 4 $ // // $Id: WavFile.cpp 120 2011-07-16 08:46:37Z oparviai $ // //////////////////////////////////////////////////////////////////////////////// // // License : // // SoundTouch audio processing library // Copyright (c) Olli Parviainen // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // //////////////////////////////////////////////////////////////////////////////// #include &lt;stdio.h&gt; 
#include &lt;stdexcept&gt; 
#include &lt;string&gt; 
#include &lt;cstring&gt; 
#include &lt;assert.h&gt; 
#include &lt;limits.h&gt; #include &amp;#8220;WavFile.h&amp;#8221; 
using namespace std; 
static const char riffStr[] = &amp;#8220;RIFF&amp;#8221;; 
static const char waveStr[] = &amp;#8220;WAVE&amp;#8221;; 
static const char fmtStr[] = &amp;#8220;fmt &amp;#8220;; 
static const char dataStr[] = &amp;#8220;data&amp;#8221;; 
////////////////////////////////////////////////////////////////////////////// 
// 
// Helper functions for swapping byte order to correctly read/write WAV files 
// with big-endian CPU&amp;#8217;s: Define compile-time definition \_BIG\_ENDIAN_ to 
// turn-on the conversion if it appears necessary. 
// 
// For example, Intel x86 is little-endian and doesn&amp;#8217;t require conversion, 
// while PowerPC of Mac&amp;#8217;s and many other RISC cpu&amp;#8217;s are big-endian. 
#ifdef BYTE_ORDER 
// In gcc compiler detect the byte order automatically 
#if BYTE\_ORDER == BIG\_ENDIAN 
// big-endian platform. 
#define \_BIG\_ENDIAN_ 
#endif 
#endif 
#ifdef \_BIG\_ENDIAN_ 
// big-endian CPU, swap bytes in 16 &amp; 32 bit words 
// helper-function to swap byte-order of 32bit integer 
static inline void _swap32(unsigned int &amp;dwData) 
{ 
dwData = ((dwData &gt;&gt; 24) &amp; 0x000000FF) | 
((dwData &gt;&gt; 8) &amp; 0x0000FF00) | 
((dwData &lt;&lt; 8) &amp; 0x00FF0000) | ((dwData &lt;&lt; 24) &amp; 0xFF000000); } // helper-function to swap byte-order of 16bit integer static inline void _swap16(unsigned short &amp;wData) { wData = ((wData &gt;&gt; 8) &amp; 0x00FF) | 
((wData &lt;&lt; 8) &amp; 0xFF00); } // helper-function to swap byte-order of buffer of 16bit integers static inline void _swap16Buffer(unsigned short *pData, unsigned int dwNumWords) { unsigned long i; for (i = 0; i &lt; dwNumWords; i ++) { \_swap16(pData[i]); } } #else // BIG\_ENDIAN // little-endian CPU, WAV file is ok as such // dummy helper-function static inline void \_swap32(unsigned int &amp;dwData) { // do nothing } // dummy helper-function static inline void \_swap16(unsigned short &amp;wData) { // do nothing } // dummy helper-function static inline void \_swap16Buffer(unsigned short \*pData, unsigned int dwNumBytes) { // do nothing } #endif // BIG\_ENDIAN ////////////////////////////////////////////////////////////////////////////// // // Class WavInFile // WavInFile::WavInFile(const char \*fileName) { // Try to open the file for reading fptr = fopen(fileName, "rb"); if (fptr == NULL) { // didn't succeed string msg = "Error : Unable to open file \""; msg += fileName; msg += "\" for reading."; throw runtime\_error(msg); } init(); } WavInFile::WavInFile(FILE \*file) { // Try to open the file for reading fptr = file; if (!file) { // didn't succeed string msg = "Error : Unable to access input stream for reading"; throw runtime\_error(msg); } init(); } /// Init the WAV file stream void WavInFile::init() { int hdrsOk; // assume file stream is already open assert(fptr); // Read the file headers hdrsOk = readWavHeaders(); if (hdrsOk != 0) { // Something didn't match in the wav file headers string msg = "Input file is corrupt or not a WAV file"; throw runtime\_error(msg); } if (header.format.fixed != 1) { string msg = "Input file uses unsupported encoding."; throw runtime\_error(msg); } dataRead = 0; } WavInFile::~WavInFile() { if (fptr) fclose(fptr); fptr = NULL; } void WavInFile::rewind() { int hdrsOk; fseek(fptr, 0, SEEK\_SET); hdrsOk = readWavHeaders(); assert(hdrsOk == 0); dataRead = 0; } int WavInFile::checkCharTags() const { // header.format.fmt should equal to 'fmt ' if (memcmp(fmtStr, header.format.fmt, 4) != 0) return -1; // header.data.data\_field should equal to 'data' if (memcmp(dataStr, header.data.data\_field, 4) != 0) return -1; return 0; } int WavInFile::read(char \*buffer, int maxElems) { int numBytes; uint afterDataRead; // ensure it's 8 bit format if (header.format.bits\_per\_sample != 8) { throw runtime\_error("Error: WavInFile::read(char*, int) works only with 8bit samples."); } assert(sizeof(char) == 1); numBytes = maxElems; afterDataRead = dataRead + numBytes; if (afterDataRead &gt; header.data.data_len) 
{ 
// Don&amp;#8217;t read more samples than are marked available in header 
numBytes = (int)header.data.data_len &amp;#8211; (int)dataRead; 
assert(numBytes &gt;= 0); 
} 
assert(buffer); 
numBytes = (int)fread(buffer, 1, numBytes, fptr); 
dataRead += numBytes; 
return numBytes; 
} 
int WavInFile::read(short *buffer, int maxElems) 
{ 
unsigned int afterDataRead; 
int numBytes; 
int numElems; 
assert(buffer); 
if (header.format.bits\_per\_sample == 8) 
{ 
// 8 bit format 
char *temp = new char[maxElems]; 
int i; 
numElems = read(temp, maxElems); 
// convert from 8 to 16 bit 
for (i = 0; i &lt; numElems; i ++) { buffer[i] = temp[i] &lt;&lt; 8; } delete[] temp; } else { // 16 bit format if (header.format.bits\_per\_sample != 16) { string msg = "WAV file bits per sample format not supported: "; msg += (int)header.format.bits\_per\_sample; msg += " bits per sample."; throw runtime\_error(msg); } assert(sizeof(short) == 2); numBytes = maxElems * 2; afterDataRead = dataRead + numBytes; if (afterDataRead &gt; header.data.data\_len) 
{ 
// Don&amp;#8217;t read more samples than are marked available in header 
numBytes = (int)header.data.data_len &amp;#8211; (int)dataRead; 
assert(numBytes &gt;= 0); 
} 
numBytes = (int)fread(buffer, 1, numBytes, fptr); 
dataRead += numBytes; 
numElems = numBytes / 2; 
// 16bit samples, swap byte order if necessary 
_swap16Buffer((unsigned short *)buffer, numElems); 
} 
return numElems; 
} 
int WavInFile::read(float *buffer, int maxElems) 
{ 
short *temp = new short[maxElems]; 
int num; 
int i; 
double fscale; 
num = read(temp, maxElems); 
fscale = 1.0 / 32768.0; 
// convert to floats, scale to range [-1..+1[ 
for (i = 0; i &lt; num; i ++) { buffer[i] = (float)(fscale * (double)temp[i]); } delete[] temp; return num; } int WavInFile::eof() const { // return true if all data has been read or file eof has reached return (dataRead == header.data.data_len || feof(fptr)); } // test if character code is between a white space ' ' and little 'z' static int isAlpha(char c) { return (c &gt;= &amp;#8216; &amp;#8216; &amp;&amp; c &lt;= 'z') ? 1 : 0; } // test if all characters are between a white space ' ' and little 'z' static int isAlphaStr(const char *str) { char c; c = str[0]; while (c) { if (isAlpha(c) == 0) return 0; str ++; c = str[0]; } return 1; } int WavInFile::readRIFFBlock() { if (fread(&amp;(header.riff), sizeof(WavRiff), 1, fptr) != 1) return -1; // swap 32bit data byte order if necessary \_swap32((unsigned int &amp;)header.riff.package\_len); // header.riff.riff\_char should equal to 'RIFF'); if (memcmp(riffStr, header.riff.riff\_char, 4) != 0) return -1; // header.riff.wave should equal to 'WAVE' if (memcmp(waveStr, header.riff.wave, 4) != 0) return -1; return 0; } int WavInFile::readHeaderBlock() { char label[5]; string sLabel; // lead label string if (fread(label, 1, 4, fptr) !=4) return -1; label[4] = 0; if (isAlphaStr(label) == 0) return -1; // not a valid label // Decode blocks according to their label if (strcmp(label, fmtStr) == 0) { int nLen, nDump; // 'fmt ' block memcpy(header.format.fmt, fmtStr, 4); // read length of the format field if (fread(&amp;nLen, sizeof(int), 1, fptr) != 1) return -1; // swap byte order if necessary \_swap32((unsigned int &amp;)nLen); // int format\_len; header.format.format\_len = nLen; // calculate how much length differs from expected nDump = nLen - ((int)sizeof(header.format) - 8); // if format\_len is larger than expected, read only as much data as we've space for if (nDump &gt; 0) 
{ 
nLen = sizeof(header.format) &amp;#8211; 8; 
} 
// read data 
if (fread(&amp;(header.format.fixed), nLen, 1, fptr) != 1) return -1; 
// swap byte order if necessary 
_swap16((unsigned short &amp;)header.format.fixed); // short int fixed; 
\_swap16((unsigned short &amp;)header.format.channel\_number); // short int channel_number; 
\_swap32((unsigned int &amp;)header.format.sample\_rate); // int sample_rate; 
\_swap32((unsigned int &amp;)header.format.byte\_rate); // int byte_rate; 
\_swap16((unsigned short &amp;)header.format.byte\_per\_sample); // short int byte\_per_sample; 
\_swap16((unsigned short &amp;)header.format.bits\_per\_sample); // short int bits\_per_sample; 
// if format_len is larger than expected, skip the extra data 
if (nDump &gt; 0) 
{ 
fseek(fptr, nDump, SEEK_CUR); 
} 
return 0; 
} 
else if (strcmp(label, dataStr) == 0) 
{ 
// &amp;#8216;data&amp;#8217; block 
memcpy(header.data.data_field, dataStr, 4); 
if (fread(&amp;(header.data.data_len), sizeof(uint), 1, fptr) != 1) return -1; 
// swap byte order if necessary 
\_swap32((unsigned int &amp;)header.data.data\_len); 
return 1; 
} 
else 
{ 
uint len, i; 
uint temp; 
// unknown block 
// read length 
if (fread(&amp;len, sizeof(len), 1, fptr) != 1) return -1; 
// scan through the block 
for (i = 0; i &lt; len; i ++) { if (fread(&amp;temp, 1, 1, fptr) != 1) return -1; if (feof(fptr)) return -1; // unexpected eof } } return 0; } int WavInFile::readWavHeaders() { int res; memset(&amp;header, 0, sizeof(header)); res = readRIFFBlock(); if (res) return 1; // read header blocks until data block is found do { // read header blocks res = readHeaderBlock(); if (res &lt; 0) return 1; // error in file structure } while (res == 0); // check that all required tags are legal return checkCharTags(); } uint WavInFile::getNumChannels() const { return header.format.channel\_number; } uint WavInFile::getNumBits() const { return header.format.bits\_per\_sample; } uint WavInFile::getBytesPerSample() const { return getNumChannels() * getNumBits() / 8; } uint WavInFile::getSampleRate() const { return header.format.sample\_rate; } uint WavInFile::getDataSizeInBytes() const { return header.data.data\_len; } uint WavInFile::getNumSamples() const { if (header.format.byte\_per\_sample == 0) return 0; return header.data.data\_len / (unsigned short)header.format.byte\_per\_sample; } uint WavInFile::getLengthMS() const { uint numSamples; uint sampleRate; numSamples = getNumSamples(); sampleRate = getSampleRate(); assert(numSamples &lt; UINT\_MAX / 1000); return (1000 \* numSamples / sampleRate); } ////////////////////////////////////////////////////////////////////////////// // // Class WavOutFile // WavOutFile::WavOutFile(const char \*fileName, int sampleRate, int bits, int channels) { bytesWritten = 0; fptr = fopen(fileName, "wb"); if (fptr == NULL) { string msg = "Error : Unable to open file \""; msg += fileName; msg += "\" for writing."; //pmsg = msg.c\_str; throw runtime\_error(msg); } fillInHeader(sampleRate, bits, channels); writeHeader(); } WavOutFile::WavOutFile(FILE \*file, int sampleRate, int bits, int channels) { bytesWritten = 0; fptr = file; if (fptr == NULL) { string msg = "Error : Unable to access output file stream."; throw runtime\_error(msg); } fillInHeader(sampleRate, bits, channels); writeHeader(); } WavOutFile::~WavOutFile() { finishHeader(); if (fptr) fclose(fptr); fptr = NULL; } void WavOutFile::fillInHeader(uint sampleRate, uint bits, uint channels) { // fill in the 'riff' part.. // copy string 'RIFF' to riff\_char memcpy(&amp;(header.riff.riff\_char), riffStr, 4); // package\_len unknown so far header.riff.package\_len = 0; // copy string 'WAVE' to wave memcpy(&amp;(header.riff.wave), waveStr, 4); // fill in the 'format' part.. // copy string 'fmt ' to fmt memcpy(&amp;(header.format.fmt), fmtStr, 4); header.format.format\_len = 0x10; header.format.fixed = 1; header.format.channel\_number = (short)channels; header.format.sample\_rate = (int)sampleRate; header.format.bits\_per\_sample = (short)bits; header.format.byte\_per\_sample = (short)(bits \* channels / 8); header.format.byte\_rate = header.format.byte\_per\_sample \* (int)sampleRate; header.format.sample\_rate = (int)sampleRate; // fill in the 'data' part.. // copy string 'data' to data\_field memcpy(&amp;(header.data.data\_field), dataStr, 4); // data\_len unknown so far header.data.data\_len = 0; } void WavOutFile::finishHeader() { // supplement the file length into the header structure header.riff.package\_len = bytesWritten + 36; header.data.data\_len = bytesWritten; writeHeader(); } void WavOutFile::writeHeader() { WavHeader hdrTemp; int res; // swap byte order if necessary hdrTemp = header; \_swap32((unsigned int &amp;)hdrTemp.riff.package\_len); \_swap32((unsigned int &amp;)hdrTemp.format.format\_len); \_swap16((unsigned short &amp;)hdrTemp.format.fixed); \_swap16((unsigned short &amp;)hdrTemp.format.channel\_number); \_swap32((unsigned int &amp;)hdrTemp.format.sample\_rate); \_swap32((unsigned int &amp;)hdrTemp.format.byte\_rate); \_swap16((unsigned short &amp;)hdrTemp.format.byte\_per\_sample); \_swap16((unsigned short &amp;)hdrTemp.format.bits\_per\_sample); \_swap32((unsigned int &amp;)hdrTemp.data.data\_len); // write the supplemented header in the beginning of the file fseek(fptr, 0, SEEK\_SET); res = (int)fwrite(&amp;hdrTemp, sizeof(hdrTemp), 1, fptr); if (res != 1) { throw runtime\_error("Error while writing to a wav file."); } // jump back to the end of the file fseek(fptr, 0, SEEK\_END); } void WavOutFile::write(const char \*buffer, int numElems) { int res; if (header.format.bits\_per\_sample != 8) { throw runtime\_error("Error: WavOutFile::write(const char\*, int) accepts only 8bit samples."); } assert(sizeof(char) == 1); res = (int)fwrite(buffer, 1, numElems, fptr); if (res != numElems) { throw runtime_error("Error while writing to a wav file."); } bytesWritten += numElems; } void WavOutFile::write(const short \*buffer, int numElems) { int res; // 16 bit samples if (numElems &lt; 1) return; // nothing to do if (header.format.bits\_per\_sample == 8) { int i; char *temp = new char[numElems]; // convert from 16bit format to 8bit format for (i = 0; i &lt; numElems; i ++) { temp[i] = buffer[i] &gt;&gt; 8; 
} 
// write in 8bit format 
write(temp, numElems); 
delete[] temp; 
} 
else 
{ 
// 16bit format 
unsigned short *pTemp = new unsigned short[numElems]; 
if (header.format.bits\_per\_sample != 16) 
{ 
string msg = &amp;#8220;WAV file bits per sample format not supported: &amp;#8220;; 
msg += (int)header.format.bits\_per\_sample; 
msg += &amp;#8221; bits per sample.&amp;#8221;; 
throw runtime_error(msg); 
} 
// allocate temp buffer to swap byte order if necessary 
memcpy(pTemp, buffer, numElems * 2); 
_swap16Buffer(pTemp, numElems); 
res = (int)fwrite(pTemp, 2, numElems, fptr); 
delete[] pTemp; 
if (res != numElems) 
{ 
throw runtime_error(&amp;#8220;Error while writing to a wav file.&amp;#8221;); 
} 
bytesWritten += 2 * numElems; 
} 
} 
void WavOutFile::write(const float *buffer, int numElems) 
{ 
int i; 
short *temp = new short[numElems]; 
int iTemp; 
// convert to 16 bit integer 
for (i = 0; i &lt; numElems; i ++) { // convert to integer iTemp = (int)(32768.0f * buffer[i]); // saturate if (iTemp &lt; -32768) iTemp = -32768; if (iTemp &gt; 32767) iTemp = 32767; 
temp[i] = (short)iTemp; 
} 
write(temp, numElems); 
delete[] temp; 
} 
[/cpp]</description></item><item><title>[图像格式] BMP（BitMap）</title><link>https://blog.perillaroc.wang/post/2012/2012-05-19-e59bbee5838fe6a0bce5bc8f-bmpefbc88bitmapefbc89/</link><pubDate>Sat, 19 May 2012 23:00:10 +0000</pubDate><guid>https://blog.perillaroc.wang/post/2012/2012-05-19-e59bbee5838fe6a0bce5bc8f-bmpefbc88bitmapefbc89/</guid><description>&lt;p&gt;BMP是最基本的图片存储格式。&lt;/p&gt;
&lt;p&gt;做了一个简单的PPT，简单介绍下BMP格式。&lt;br&gt;
PPT地址：&amp;lt;//www.slideshare.net/perillaroc/bmp-12993147&amp;gt;&lt;br&gt;
（slideshare的插件不好使，只能放图片了）&lt;/p&gt;
&lt;figure style="width: 972px" class="wp-caption alignnone"&gt;[&lt;img title="BMP图像格式" src="http://ww4.sinaimg.cn/large/4afdac38tw1dt40gmmkp6j.jpg" alt="BMP图像格式" width="972" height="18156" /&gt;](//ww4.sinaimg.cn/large/4afdac38tw1dt40gmmkp6j.jpg)&lt;figcaption class="wp-caption-text"&gt;BMP图像格式&lt;/figcaption&gt;&lt;/figure&gt;</description></item><item><title>[转载] 计算机视觉研究群体及专家主页汇总</title><link>https://blog.perillaroc.wang/post/2012/2012-02-14-e8bdace8bdbd-e8aea1e7ae97e69cbae8a786e8a789e7a094e7a9b6e7bea4e4bd93e58f8ae4b893e5aeb6e4b8bbe9a1b5e6b187e680bb/</link><pubDate>Tue, 14 Feb 2012 12:52:29 +0000</pubDate><guid>https://blog.perillaroc.wang/post/2012/2012-02-14-e8bdace8bdbd-e8aea1e7ae97e69cbae8a786e8a789e7a094e7a9b6e7bea4e4bd93e58f8ae4b893e5aeb6e4b8bbe9a1b5e6b187e680bb/</guid><description>&lt;p&gt;做机器视觉和图像处理方面的研究工作，最重要的两个问题：其一是要把握住国际上最前沿的内容；其二是所作工作要具备很高的实用背景。解决第一个问题的办法就是找出这个方向公认最高成就的几个超级专家(看看他们都在作什么)和最权威的出版物(阅读上面最新的文献)，解决第二个问题的办法是你最好能够找到一个实际应用的项目，边做边写文章。 做好这几点的途径之一就是利用网络资源，利用权威网站和专家们的个人主页。&lt;/p&gt;
&lt;p&gt;依照下面目录整理：&lt;br&gt;
[1]研究群体(国际国内)[2]专家主页[3]前沿国际国内期刊与会议[4]搜索资源[5]GPL软件资源&lt;br&gt;
&lt;strong&gt;一、研究群体&lt;/strong&gt;&lt;br&gt;
用来搜索国际知名计算机视觉研究组(CV Groups)：&lt;br&gt;
国际计算机视觉研究组清单&lt;a href="//peipa.essex.ac.uk/info/groups.html" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//peipa.essex.ac.uk/info/groups.html&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
美国计算机视觉研究组清单 &lt;a href="//peipa.essex.ac.uk/info/groups.html#USA" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//peipa.essex.ac.uk/info/groups.html#USA&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="//www-2.cs.cmu.edu/~cil/vision.html" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www-2.cs.cmu.edu/~cil/vision.html&lt;/span&gt;&lt;/a&gt;或 &lt;a href="//www.cs.cmu.edu/~cil/vision.html" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cs.cmu.edu/~cil/vision.html&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
这是卡奈基梅隆大学的计算机视觉研究组的主页，上面提供很全的资料，从发表文章的下载到演示程序、测试图像、常用链接、相关软硬件，甚至还有一个搜索引擎。著名的有人物Tomasi， Kanade等。&lt;br&gt;
卡内基梅隆大学双目实验室&lt;a href="//vision.middlebury.edu/stereo/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//vision.middlebury.edu/stereo/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
卡内基梅隆研究组&lt;a href="//www.cs.cmu.edu/~cil/v-groups.html" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cs.cmu.edu/~cil/v-groups.html&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
还有几个实验室：&lt;br&gt;
Calibrated Imaging Laboratory 图像&lt;br&gt;
Digital Mapping Laboratory 映射&lt;br&gt;
Interactive Systems Laboratory 互动&lt;br&gt;
Vision and Autonomous Systems Center视觉自适应&lt;br&gt;
&lt;a href="//www.via.cornell.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.via.cornell.edu/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
康奈尔大学的计算机视觉和图像分析研究组，好像是电子和计算机工程系的。侧重医学方面的研究，但是在上面有相当不错资源，关键是它正在建设中，能够跟踪一些信息。&lt;br&gt;
Cornell University——Robotics and Vision group&lt;br&gt;
&lt;a href="//www-cs-students.stanford.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www-cs-students.stanford.edu/&lt;/span&gt;&lt;/a&gt; 斯坦福大学计算机系主页&lt;br&gt;
1. &lt;a href="//white.stanford.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//white.stanford.edu/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
2. &lt;a href="//vision.stanford.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//vision.stanford.edu/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
3. &lt;a href="//ai.stanford.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//ai.stanford.edu/&lt;/span&gt;&lt;/a&gt;美国斯坦福大学人工智能机器人实验室&lt;br&gt;
The Stanford AI Lab (SAIL) is the intellectual home for researchers in the Stanford Computer Science Department whose primary research focus is Artificial Intelligence. The lab is located in the Gates…&lt;br&gt;
Vision and Imaging Science and Technology&lt;br&gt;
&lt;a href="//www.fmrib.ox.ac.uk/analysis/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.fmrib.ox.ac.uk/analysis/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
主要研究：Brain Extraction Tool， Nonlinear noise reduction， Linear Image Registration， Automated Segmentation， Structural brain change analysis， motion correction， etc.&lt;br&gt;
&lt;a href="//www.cse.msu.edu/prip/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cse.msu.edu/prip/&lt;/span&gt;&lt;/a&gt;—密歇根州立大学计算机和电子工程系的模式识别–图像处理研究组，它的FTP上有许多的文章(NEW)。&lt;br&gt;
美国密歇根州大学认知模型和图像处理实验室&lt;br&gt;
The Pattern Recognition and Image Processing (PRIP) Lab faculty and students investigate the use of machines to recognize patterns or objects. Methods are developed to sense objects， to discover which…&lt;a href="//www.cse.msu.edu/rgroups/prip/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cse.msu.edu/rgroups/prip/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="//pandora.inf.uni-jena.de/p/e/index.html" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//pandora.inf.uni-jena.de/p/e/index.html&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
德国的一个数字图像处理研究小组，在其上面能找到一些不错的链接资源。&lt;br&gt;
柏林大学 &lt;a href="//www.cv.tu-berlin.de/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cv.tu-berlin.de/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
德国波恩大学视觉和认识模型小组&lt;br&gt;
Computer Vision Group located within the Division III of the Computer Science Department in the University of Bonn in Germany. This server offers information on topics concerning our computer vision &lt;a href="//www-dbv.informatik.uni-bonn.de/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www-dbv.informatik.uni-bonn.de/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="//www-staff.it.uts.edu.au/~sean/CVCC.dir/home.html" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www-staff.it.uts.edu.au/~sean/CVCC.dir/home.html&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
CVIP(used to be CVCC for Computer Vision and Cluster Computing) is a research group focusing on cluster-based computer vision within the Spiral Architecture.&lt;br&gt;
&lt;a href="//cfia.gmu.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//cfia.gmu.edu/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
The mission of the Center for Image Analysis is to foster multi-disciplinary research in image， multimedia and related technologies by establishing links between academic institutes， industry and government agencies， and to transfer key technologies to help industry build next generation commercial and military imaging and multimedia systems.&lt;br&gt;
英国的Bristol大学的Digital Media Group在高级图形图像方面不错。主要就是涉及到场景中光线计算的问题，比如用全局光照或是各种局部光照对高动态图的处理，还有近似真实的模拟现实环境 (照片级别的)，还有用几张照片来建立3D模型(人头之类的)。另外也有对古代建筑模型复原。&lt;a href="//www.cs.bristol.ac.uk/Research/Digitalmedia/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cs.bristol.ac.uk/Research/Digitalmedia/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
而且根据Times全英计算机排名在第3， 也算比较顶尖的研究了&lt;br&gt;
&lt;a href="//www.cmis.csiro.au/IAP/zimage.htm" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cmis.csiro.au/IAP/zimage.htm&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
这是一个侧重图像分析的站点，一般。但是提供一个Image Analysis环境—ZIMAGE and SZIMAGE。&lt;br&gt;
麻省理工视觉实验室MIT &lt;a href="//groups.csail.mit.edu/vision/welcome/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//groups.csail.mit.edu/vision/welcome/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
AI Laboratory Computer Vision group&lt;br&gt;
Center for Biological and Computational Learning&lt;br&gt;
Media Laboratory， Vision and Modeling Group&lt;br&gt;
Perceptual Science group&lt;br&gt;
UC Berkeley &lt;a href="//0-vision.berkeley.edu.ilstest.lib.neu.edu/vsp/index.html" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//0-vision.berkeley.edu.ilstest.lib.neu.edu/vsp/index.html&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="//www.cs.berkeley.edu.ilstest.lib.neu.edu/projects/vision/vision_group.html" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cs.berkeley.edu.ilste … n/vision_group.html&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
加州大学伯克利分校视觉实验室David A. Forsyth：&lt;a href="//www.cs.berkeley.edu/~daf/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cs.berkeley.edu/~daf/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
UCLA(加州大学洛杉矶分校) &lt;a href="//vision.ucla.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//vision.ucla.edu/&lt;/span&gt;&lt;/a&gt;视觉实验室&lt;br&gt;
英国牛津的A.Zisserman：&lt;a href="//www.robots.ox.ac.uk/~az/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.robots.ox.ac.uk/~az/&lt;/span&gt;&lt;/a&gt; 机器人实验室&lt;br&gt;
美国南加州大学智能机器人和智能系统研究所University of Southern California， Los Angeles&lt;br&gt;
IRIS is an interdepartmental unit of USC’s School of Engineering with ties to USC’s Information Sciences Institute (ISI). Members include faculty， graduate students， and research staff associated with… &lt;a href="//iris.usc.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//iris.usc.edu/&lt;/span&gt;&lt;/a&gt; Computer Vision 实验室&lt;br&gt;
美国南加州大学计算机视觉实验室介绍：&lt;br&gt;
Computer Vision Laboratory at the University of Southern California is one of the major centers of computer vision research for thirty years. they conduct research in a number of basic and applied are…&lt;a href="//iris.usc.edu/USC-Computer-Vision.html" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//iris.usc.edu/USC-Computer-Vision.html&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
英国约克大学高级计算机结构神经网络小组&lt;br&gt;
The Advanced Computer Architecture Group has had a thriving research programme in neural networks for over 10 years. The 15 researchers， led by Jim Austin， focus their work in the theory and applicati…&lt;a href="//www.cs.york.ac.uk/arch/neural/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cs.york.ac.uk/arch/neural/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
瑞士戴尔莫尔感知人工智能研究所&lt;br&gt;
IDIAP is a research institute established in Martigny in the Swiss Alps since 1991. Active in the areas of multimodal interaction and multimedia information management， the institute is also the leade…&lt;a href="//www.idiap.ch/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.idiap.ch/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
英国萨里大学视觉，语言和信号处理中心&lt;br&gt;
The Centre for Vision， Speech and Signal Processing (CVSSP) is more than 60 members strong， comprising 12 academic staff， 18 research fellows and more than 44 research students. The activities of the …&lt;a href="//www.ee.surrey.ac.uk/Research/VSSP/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.ee.surrey.ac.uk/Research/VSSP/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
美国阿默斯特马萨诸塞州立大学计算机视觉实验室&lt;br&gt;
The Computer Vision Laboratory was established in the Computer Science Department at the University of Massachusetts in 1974 with the goal of investigating the scientific principles underlying the con…&lt;a href="//vis-www.cs.umass.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//vis-www.cs.umass.edu&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
University of Massachusetts——Computer Vision Laboratory for Perceptual Robotics&lt;br&gt;
美国芝加哥伊利诺伊斯大学贝克曼研究中心智能机器人和计算机视觉实验室&lt;br&gt;
Includes the following groups: Professor Seth Hutchinson’s Research Group Professor David Kriegman’s Research Group Professor Jean Ponce’s Research Group Professor Narendra Ahuja’s Research Gro…&lt;a href="//www-cvr.ai.uiuc.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www-cvr.ai.uiuc.edu/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
Computer Vision and Robotics Laboratory&lt;br&gt;
Vision Interfaces and Systems Laboratory (VISLab)&lt;br&gt;
英国伯明翰大学计算机科学学校视觉研究小组&lt;br&gt;
The vision group at the School of Computer Science (a RAE 5 rated department) performs research into a wide variety of computer vision and image understanding areas. Much of this work is performed in …&lt;a href="//www.cs.bham.ac.uk/research/vision/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cs.bham.ac.uk/research/vision/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
微软研究院机器学习与理解研究小组 / 计算机视觉小组&lt;br&gt;
The research group focuses on the development of more advanced and intelligent computer systems through the exploitation of statistical methods in machine learning and computer vision. The site lists …&lt;a href="//research.microsoft.com/mlp/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//research.microsoft.com/mlp/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="//research.microsoft.com/en-us/groups/vision/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//research.microsoft.com/en-us/groups/vision/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
微软公司的文献：&lt;a href="//research.microsoft.com/research/pubs" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//research.microsoft.com/research/pubs&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
微软亚洲研究院：&lt;a href="//research.microsoft.com/asia/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//research.microsoft.com/asia/&lt;/span&gt;&lt;/a&gt;，值得关注Harry Shum， Jian Sun， Steven Lin， Long Quan(兼职HKUST)etc.&lt;br&gt;
瑞典隆德大学数学系视觉组：&lt;a href="//www.maths.lth.se/matematiklth/personal/andersp/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.maths.lth.se/matematiklth/personal/andersp/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
感觉国外搞视觉的好多是数学系出身，大约做计算机视觉对数学要求很高吧。&lt;br&gt;
澳大利亚国立大学：&lt;a href="//users.rsise.anu.edu.au/~hartley/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//users.rsise.anu.edu.au/~hartley/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
美国北卡大学：&lt;a href="//www.cs.unc.edu/~marc/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cs.unc.edu/~marc/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
法国INRIA：&lt;a href="//www-sop.inria.fr/odyssee/team/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www-sop.inria.fr/odyssee/team/&lt;/span&gt;&lt;/a&gt; 由Olivier.Faugeras领衔的牛人众多。&lt;br&gt;
比利时鲁汶大学的L.Van Gool： &lt;a href="//www.esat.kuleuven.ac.be/psi/visics/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;&lt;a href="https://www.esat.kuleuven.ac.be/psi/visics/"&gt;www.esat.kuleuven.ac.be/psi/visics/&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
据说在这个只有中国一个小镇大小的地方的鲁汶大学在欧洲排行top10，名列世界top100，还出了几个诺贝尔奖，视觉研究也很强.&lt;br&gt;
美国明德&lt;a href="//vision.middlebury.edu/stereo/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//vision.middlebury.edu/stereo/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
以下含有非顶尖美国学校研究组，没有链接(个别的上面已经提到)，供参考。&lt;br&gt;
Amerinex Applied Imaging， Inc.&lt;br&gt;
Boston University&lt;br&gt;
Image and Video Computing Research group&lt;br&gt;
University of California at Santa Barbara加州大学芭芭拉分校&lt;br&gt;
Vision Research Lab&lt;br&gt;
University of California at San Diego加州大学圣迭戈分校&lt;br&gt;
Computer Vision &amp;amp; Robotics Research Laboratory&lt;br&gt;
Visual Computing laboratory&lt;br&gt;
University of California at Irvine加州大学欧文分校，加州南部一城，在圣安娜东南，&lt;br&gt;
Computer Vision laboratory&lt;br&gt;
University of California， Riverside加州大学河滨分校&lt;br&gt;
Visualization and Intelligent Systems Laboratory (VISLab)&lt;br&gt;
University of California at Santa Cruz&lt;br&gt;
Perceptual Science Laboratory&lt;br&gt;
Caltech (加州理工)&lt;br&gt;
Vision group&lt;br&gt;
University of Central Florida&lt;br&gt;
Computer Vision laboratory&lt;br&gt;
University of Florida&lt;br&gt;
Center for Computer Vision and Visualization&lt;br&gt;
Colorado State University&lt;br&gt;
Computer Vision group&lt;br&gt;
Columbia University&lt;br&gt;
Automated Vision Environment (CAVE)&lt;br&gt;
Robotics group&lt;br&gt;
University of Georgia， Athens&lt;br&gt;
Visual and Parallel Computing Laboratory&lt;br&gt;
Harvard University（哈佛）&lt;br&gt;
Robotics Laboratory&lt;br&gt;
University of Illinois at Urbana-Champaign&lt;br&gt;
Robotics and Computer Vision&lt;br&gt;
University of Iowa&lt;br&gt;
Division of Physiologic Imaging&lt;br&gt;
Jet Propulsion Laboratory&lt;br&gt;
Machine Vision and Tracking Sensors group&lt;br&gt;
Khoral Research， Inc&lt;br&gt;
Lawrence Berkeley Laboratories&lt;br&gt;
Imaging and Collaborative Computing Group&lt;br&gt;
Imaging and Distributed Computing&lt;br&gt;
Lehigh University&lt;br&gt;
Image Processing and Pattern Analysis Lab&lt;br&gt;
Vision And Software Technology Laboratory&lt;br&gt;
University of Louisville&lt;br&gt;
Computer Vision and Image Processing Lab&lt;br&gt;
University of Maryland&lt;br&gt;
Computer Vision Laboratory&lt;br&gt;
University of Miami&lt;br&gt;
Underwater Vision and Imaging Laboratory&lt;br&gt;
University of Michigan密歇根&lt;br&gt;
AI Laboratory&lt;br&gt;
Michigan State University 密歇根州立&lt;br&gt;
Pattern Recognition and Image Processing laboratory&lt;br&gt;
Environmental Research Institute of Michigan (ERIM) 密歇根大学有汽车车身检测研究&lt;br&gt;
University of Missouri-Columbia&lt;br&gt;
Computational Intelligence Research Laboratory&lt;br&gt;
NEC&lt;br&gt;
Computer Vision and Image Processing&lt;br&gt;
University of Nevada&lt;br&gt;
Computer Vision Laboratory&lt;br&gt;
Notre-Dame University&lt;br&gt;
Vision-Based Robotics using Estimation&lt;br&gt;
Ohio State University&lt;br&gt;
Signal Analysis and Machine Perception Laboratory&lt;br&gt;
University of Pennsylvania&lt;br&gt;
GRASP laboratory&lt;br&gt;
Medical Image Processing group&lt;br&gt;
Vision Analysis and Simulation Technologies (VAST) Laboratory&lt;br&gt;
Penn State University 宾夕法尼亚大学&lt;br&gt;
Computer Vision&lt;br&gt;
Precision Digital Images&lt;br&gt;
Purdue University普渡大学&lt;br&gt;
Robot Vision laboratory&lt;br&gt;
Video and Image Processing Laboratory (VIPER)&lt;br&gt;
Rensselaer Polytechnic Institute (RPI)&lt;br&gt;
Computer Science Vision&lt;br&gt;
University of Rochester&lt;br&gt;
Center for Electronic Imaging Systems&lt;br&gt;
Vision and Robotics laboratory&lt;br&gt;
Rutgers University (The State University of New Jersey)&lt;br&gt;
Image Understanding Lab&lt;br&gt;
University of Southern California&lt;br&gt;
Computer Vision&lt;br&gt;
University of South Florida&lt;br&gt;
Image Analysis Research group&lt;br&gt;
Stanford Research Institute International (SRI)&lt;br&gt;
RADIUS — Research and Development for Image Understanding Systems&lt;br&gt;
The Perception program at SRI’s AI Center&lt;br&gt;
SUNY at Stony Brook&lt;br&gt;
Computer Vision Lab&lt;br&gt;
University of Tennessee&lt;br&gt;
Imaging， Robotics and Intelligent Systems laboratory&lt;br&gt;
University of Texas， Austin&lt;br&gt;
Laboratory for Vision Systems&lt;br&gt;
University of Utah&lt;br&gt;
Center for Scientific Computing and Imaging&lt;br&gt;
Robotics and Computer Vision&lt;br&gt;
University of Virginia&lt;br&gt;
Computer Vision Research (CS)&lt;br&gt;
University of Washington&lt;br&gt;
Image Computing Systems Laboratory&lt;br&gt;
Information Processing Laboratory&lt;br&gt;
CVIA Laboratory&lt;br&gt;
University of West Florida&lt;br&gt;
Image Analysis/Robotics Research Laboratory&lt;br&gt;
University of Wisconsin&lt;br&gt;
Computer Vision group&lt;br&gt;
Vanderbilt University&lt;br&gt;
Center for Intelligent Systems&lt;br&gt;
Washington State University&lt;br&gt;
Imaging Research laboratory&lt;br&gt;
Wright-Patterson&lt;br&gt;
Model-Based Vision laboratory&lt;br&gt;
Wright State University&lt;br&gt;
Intelligent Systems Laboratory&lt;br&gt;
University of Wyoming&lt;br&gt;
Wyoming Image and Signal Processing Research (WISPR)&lt;br&gt;
Yale University&lt;br&gt;
Computational Vision Group &lt;a href="//www.cs.yale.edu/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cs.yale.edu/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
School of Medicine， Image Processing and Analysis group&lt;br&gt;
国内：&lt;br&gt;
中科院模式识别国家重点实验室 &lt;a href="//www.nlpr.ia.ac.cn/English/rv/mainpage.html" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.nlpr.ia.ac.cn/English/rv/mainpage.html&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
虹膜识别、掌纹识别、人脸识别、&lt;br&gt;
莲花山&lt;a href="//www.stat.ucla.edu/~sczhu/Lotus/" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.stat.ucla.edu/~sczhu/Lotus/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
天津大学精密测试技术及仪器国家重点实验室&lt;br&gt;
研究方向包括：激光及光电测试技术、传感及测量信息技术、微纳测试与制造技术、制造质量控制技术。该实验室是国内精密测试领域惟一的国家重点实验室。&lt;br&gt;
“智能微系统及其集成应用技术”、“微结构光学测试技术”、“油气储运安全检测技术”、“先进制造中的视觉测量及其关键技术”、“正交偏振激光器原理、特性及其在精密计量中的应用研究”等5项代表性成果（07.3）。&lt;br&gt;
中科院长春光机所 &lt;a href="//www.ciomp.ac.cn/ny/keyan.asp" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.ciomp.ac.cn/ny/keyan.asp&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
中科院沈阳自动化所&lt;a href="//www.sia.ac.cn/index.php" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.sia.ac.cn/index.php&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
中科院西安光机所&lt;a href="//www.opt.ac.cn/yanjiushi/gpcxjs1.htm" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.opt.ac.cn/yanjiushi/gpcxjs1.htm&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
北京大学智能科学系&lt;a href="//www.cis.pku.edu.cn/vision/vision.htm" target="_blank"&gt;&lt;span style="color: #765f47;"&gt;//www.cis.pku.edu.cn/vision/vision.htm&lt;/span&gt;&lt;/a&gt;&lt;br&gt;
三维视觉计算与机器人，生物特征识别与图像识别&lt;/p&gt;</description></item><item><title>[转载] 计算机视觉资料链接</title><link>https://blog.perillaroc.wang/post/2012/2012-02-14-e8bdace8bdbd-e8aea1e7ae97e69cbae8a786e8a789e8b584e69699e993bee68ea5/</link><pubDate>Tue, 14 Feb 2012 12:47:12 +0000</pubDate><guid>https://blog.perillaroc.wang/post/2012/2012-02-14-e8bdace8bdbd-e8aea1e7ae97e69cbae8a786e8a789e8b584e69699e993bee68ea5/</guid><description>&lt;p&gt;&lt;a href="//blog.csdn.net/carson2005/article/details/6601109"&gt;计算机视觉领域的一些牛人博客，超有实力的研究机构等的网站链接&lt;/a&gt;&lt;br&gt;
&lt;a href="//blog.csdn.net/carson2005/article/details/6586635"&gt;推荐一些计算机视觉相关的书籍&lt;/a&gt;&lt;br&gt;
 &lt;br&gt;
转载内容：&lt;br&gt;
&lt;a href="//blog.csdn.net/carson2005/article/details/6601109"&gt;计算机视觉领域的一些牛人博客，超有实力的研究机构等的网站链接&lt;/a&gt;&lt;br&gt;
以下链接是本人整理的关于计算机视觉（ComputerVision, CV）相关领域的网站链接，其中有CV牛人的主页，CV研究小组的主页，CV领域的paper,代码，CV领域的最新动态，国内的应用情况等等。打算从事这个行业或者刚入门的朋友可以多关注这些网站，多了解一些CV的具体应用。搞研究的朋友也可以从中了解到很多牛人的研究动态、招生情况等。总之，我认为，知识只有分享才能产生更大的价值，真诚希望下面的链接能对朋友们有所帮助。&lt;br&gt;
（1）googleResearch； &lt;a href="//research.google.com/index.html" target="_blank"&gt;//research.google.com/index.html&lt;/a&gt;&lt;br&gt;
（2）MIT博士，汤晓欧学生林达华； &lt;a href="//people.csail.mit.edu/dhlin/index.html" target="_blank"&gt;//people.csail.mit.edu/dhlin/index.html&lt;/a&gt;&lt;br&gt;
（3）MIT博士后Douglas Lanman； &lt;a href="//web.media.mit.edu/~dlanman/" target="_blank"&gt;//web.media.mit.edu/~dlanman/&lt;/a&gt;&lt;br&gt;
（4）opencv中文网站； &lt;a href="//www.opencv.org.cn/index.php/%E9%A6%96%E9%A1%B5" target="_blank"&gt;//www.opencv.org.cn/index.php/%E9%A6%96%E9%A1%B5&lt;/a&gt;&lt;br&gt;
（5）Stanford大学vision实验室； &lt;a href="//vision.stanford.edu/research.html" target="_blank"&gt;//vision.stanford.edu/research.html&lt;/a&gt;&lt;br&gt;
（6）Stanford大学博士崔靖宇； &lt;a href="//www.stanford.edu/~jycui/" target="_blank"&gt;//www.stanford.edu/~jycui/&lt;/a&gt;&lt;br&gt;
（7）UCLA教授朱松纯； &lt;a href="//www.stat.ucla.edu/~sczhu/" target="_blank"&gt;//www.stat.ucla.edu/~sczhu/&lt;/a&gt;&lt;br&gt;
（8）中国人工智能网； &lt;a href="//www.chinaai.org/" target="_blank"&gt;//www.chinaai.org/&lt;/a&gt;&lt;br&gt;
（9）中国视觉网； &lt;a href="//www.china-vision.net/" target="_blank"&gt;//www.china-vision.net/&lt;/a&gt;&lt;br&gt;
（10）中科院自动化所； &lt;a href="//www.ia.cas.cn/" target="_blank"&gt;//www.ia.cas.cn/&lt;/a&gt;&lt;br&gt;
（11）中科院自动化所李子青研究员； &lt;a href="//www.cbsr.ia.ac.cn/users/szli/" target="_blank"&gt;//www.cbsr.ia.ac.cn/users/szli/&lt;/a&gt;&lt;br&gt;
（12）中科院计算所山世光研究员； &lt;a href="//www.jdl.ac.cn/user/sgshan/" target="_blank"&gt;//www.jdl.ac.cn/user/sgshan/&lt;/a&gt;&lt;br&gt;
（13）人脸识别主页； &lt;a href="//www.face-rec.org/" target="_blank"&gt;//www.face-rec.org/&lt;/a&gt;&lt;br&gt;
（14）加州大学伯克利分校CV小组；&amp;lt;//www.eecs.berkeley.edu/Research/Projects/CS/vision/&amp;gt;&lt;br&gt;
（15）南加州大学CV实验室； &lt;a href="//iris.usc.edu/USC-Computer-Vision.html" target="_blank"&gt;//iris.usc.edu/USC-Computer-Vision.html&lt;/a&gt;&lt;br&gt;
（16）卡内基梅隆大学CV主页；&lt;br&gt;
&amp;lt;//www.cs.cmu.edu/afs/cs/project/cil/ftp/html/vision.html&amp;gt;&lt;br&gt;
（17）微软CV研究员Richard Szeliski；&lt;a href="//research.microsoft.com/en-us/um/people/szeliski/" target="_blank"&gt;//research.microsoft.com/en-us/um/people/szeliski/&lt;/a&gt;&lt;br&gt;
（18）微软亚洲研究院计算机视觉研究组； &lt;a href="//research.microsoft.com/en-us/groups/vc/" target="_blank"&gt;//research.microsoft.com/en-us/groups/vc/&lt;/a&gt;&lt;br&gt;
（19）微软剑桥研究院ML与CV研究组； &amp;lt;//research.microsoft.com/en-us/groups/mlp/default.aspx&amp;gt;&lt;br&gt;
（20）研学论坛； &lt;a href="//bbs.matwav.com/" target="_blank"&gt;//bbs.matwav.com/&lt;/a&gt;&lt;br&gt;
（21）美国Rutgers大学助理教授刘青山； &lt;a href="//www.research.rutgers.edu/~qsliu/" target="_blank"&gt;//www.research.rutgers.edu/~qsliu/&lt;/a&gt;&lt;br&gt;
（22）计算机视觉最新资讯网； &lt;a href="//www.cvchina.info/" target="_blank"&gt;//www.cvchina.info/&lt;/a&gt;&lt;br&gt;
（23）运动检测、阴影、跟踪的测试视频下载；&lt;a href="//apps.hi.baidu.com/share/detail/18903287" target="_blank"&gt;//apps.hi.baidu.com/share/detail/18903287&lt;/a&gt;&lt;br&gt;
（24）香港中文大学助理教授王晓刚； &lt;a href="//www.ee.cuhk.edu.hk/~xgwang/" target="_blank"&gt;//www.ee.cuhk.edu.hk/~xgwang/&lt;/a&gt;&lt;br&gt;
(25)香港中文大学多媒体实验室（汤晓鸥）; &lt;a href="//mmlab.ie.cuhk.edu.hk/" target="_blank"&gt;//mmlab.ie.cuhk.edu.hk/&lt;/a&gt;&lt;br&gt;
(26)U.C. San Diego. computer vision;&lt;a href="//vision.ucsd.edu/content/home" target="_blank"&gt;//vision.ucsd.edu/content/home&lt;/a&gt;&lt;br&gt;
(27)CVonline; &lt;a href="//homepages.inf.ed.ac.uk/rbf/CVonline/" target="_blank"&gt;//homepages.inf.ed.ac.uk/rbf/CVonline/&lt;/a&gt;&lt;br&gt;
(28)computer vision software; &lt;a href="//peipa.essex.ac.uk/info/software.html" target="_blank"&gt;//peipa.essex.ac.uk/info/software.html&lt;/a&gt;&lt;br&gt;
(29)Computer Vision Resource; &lt;a href="//www.cvpapers.com/" target="_blank"&gt;//www.cvpapers.com/&lt;/a&gt;&lt;br&gt;
(30)computer vision research groups;&lt;a href="//peipa.essex.ac.uk/info/groups.html" target="_blank"&gt;//peipa.essex.ac.uk/info/groups.html&lt;/a&gt;&lt;br&gt;
(31)computer vision center; &lt;a href="//computervisioncentral.com/cvcnews" target="_blank"&gt;//computervisioncentral.com/cvcnews&lt;/a&gt;&lt;br&gt;
(32)浙江大学图像技术研究与应用（ITRA）团队：&amp;lt;//www.dvzju.com/&amp;gt;&lt;br&gt;
(33)自动识别网：&amp;lt;//www.autoid-china.com.cn/&amp;gt;&lt;br&gt;
(34)清华大学章毓晋教授：&amp;lt;//www.tsinghua.edu.cn/publish/ee/4157/2010/20101217173552339241557/20101217173552339241557_.html&amp;gt;&lt;br&gt;
(35)顶级民用机器人研究小组Porf.Gary领导的Willow Garage:&amp;lt;//www.willowgarage.com/&amp;gt;&lt;br&gt;
(36)上海交通大学图像处理与模式识别研究所：&amp;lt;//www.pami.sjtu.edu.cn/&amp;gt;&lt;br&gt;
(37)上海交通大学计算机视觉实验室刘允才教授：&amp;lt;//www.visionlab.sjtu.edu.cn/&amp;gt;&lt;br&gt;
(38)德克萨斯州大学奥斯汀分校助理教授Kristen Grauman ：&amp;lt;//www.cs.utexas.edu/~grauman/&amp;gt;&lt;br&gt;
(39)清华大学电子工程系智能图文信息处理实验室（丁晓青教授）：&amp;lt;//ocrserv.ee.tsinghua.edu.cn/auto/index.asp&amp;gt;&lt;br&gt;
(40)北京大学高文教授：&amp;lt;//www.jdl.ac.cn/htm-gaowen/&amp;gt;&lt;br&gt;
(41)清华大学艾海舟教授：&amp;lt;//media.cs.tsinghua.edu.cn/cn/aihz&amp;gt;&lt;br&gt;
(42)中科院生物识别与安全技术研究中心：&amp;lt;//www.cbsr.ia.ac.cn/china/index%20CH.asp&amp;gt;&lt;br&gt;
(43)瑞士巴塞尔大学 Thomas Vetter教授：&amp;lt;//informatik.unibas.ch/personen/vetter_t.html&amp;gt;&lt;br&gt;
(44)俄勒冈州立大学 Rob Hess博士：&amp;lt;//blogs.oregonstate.edu/hess/&amp;gt;&lt;br&gt;
(45)深圳大学 于仕祺副教授：&amp;lt;//yushiqi.cn/&amp;gt;&lt;br&gt;
(46)西安交通大学人工智能与机器人研究所：&amp;lt;//www.aiar.xjtu.edu.cn/&amp;gt;&lt;br&gt;
(47)卡内基梅隆大学研究员Robert T. Collins:&amp;lt;//www.cs.cmu.edu/~rcollins/home.html#Background&amp;gt;&lt;br&gt;
(48)MIT博士Chris Stauffer:&amp;lt;//people.csail.mit.edu/stauffer/Home/index.php&amp;gt;&lt;br&gt;
(49)美国密歇根州立大学生物识别研究组(Anil K. Jain教授)：&amp;lt;//www.cse.msu.edu/rgroups/biometrics/&amp;gt;&lt;br&gt;
(50)美国伊利诺伊州立大学Thomas S. Huang:&amp;lt;//www.beckman.illinois.edu/directory/t-huang1&amp;gt;&lt;br&gt;
(51)武汉大学数字摄影测量与计算机视觉研究中心：&amp;lt;//www.whudpcv.cn/index.asp&amp;gt;&lt;br&gt;
(52)瑞士巴塞尔大学Sami Romdhani助理研究员：&amp;lt;//informatik.unibas.ch/personen/romdhani_sami/&amp;gt;&lt;br&gt;
(53)CMU大学研究员Yang Wang:&amp;lt;//www.cs.cmu.edu/~wangy/home.html&amp;gt;&lt;br&gt;
(54)英国曼彻斯特大学Tim Cootes教授：&amp;lt;//personalpages.manchester.ac.uk/staff/timothy.f.cootes/&amp;gt;&lt;br&gt;
(55)美国罗彻斯特大学教授Jiebo Luo:&amp;lt;//www.cs.rochester.edu/u/jluo/&amp;gt;&lt;br&gt;
(56)美国普渡大学机器人视觉实验室：&lt;a href="https://engineering.purdue.edu/RVL/Welcome.html"&gt;https://engineering.purdue.edu/RVL/Welcome.html&lt;/a&gt;&lt;br&gt;
(57)美国宾利州立大学感知、运动与认识实验室：&amp;lt;//vision.cse.psu.edu/home/home.shtml&amp;gt;&lt;br&gt;
(58)美国宾夕法尼亚大学GRASP实验室：&lt;a href="https://www.grasp.upenn.edu/"&gt;https://www.grasp.upenn.edu/&lt;/a&gt;&lt;br&gt;
(59)美国内达华大学里诺校区CV实验室：&amp;lt;//www.cse.unr.edu/CVL/index.php&amp;gt;&lt;br&gt;
(60)美国密西根大学vision实验室：&amp;lt;//www.eecs.umich.edu/vision/index.html&amp;gt;&lt;br&gt;
(61)University of Massachusetts(麻省大学),视觉实验室：&amp;lt;//vis-www.cs.umass.edu/index.html&amp;gt;&lt;br&gt;
(62)华盛顿大学博士后Iva Kemelmacher:&amp;lt;//www.cs.washington.edu/homes/kemelmi&amp;gt;&lt;br&gt;
(63)以色列魏茨曼科技大学Ronen Basri:&amp;lt;//www.wisdom.weizmann.ac.il/~ronen/index.html&amp;gt;&lt;br&gt;
(64)瑞士ETH-Zurich大学CV实验室：&amp;lt;//www.vision.ee.ethz.ch/boostingTrackers/index.htm&amp;gt;&lt;br&gt;
(65)微软CV研究员张正友：&amp;lt;//research.microsoft.com/en-us/um/people/zhang/&amp;gt;&lt;br&gt;
(66)中科院自动化所医学影像研究室：&amp;lt;//www.3dmed.net/&amp;gt;&lt;br&gt;
(67)中科院田捷研究员：&amp;lt;//www.3dmed.net/tian/&amp;gt;&lt;br&gt;
(68)微软Redmond研究院研究员Simon Baker:&amp;lt;//research.microsoft.com/en-us/people/sbaker/&amp;gt;&lt;br&gt;
(69)普林斯顿大学教授李凯：&amp;lt;//www.cs.princeton.edu/~li/&amp;gt;&lt;br&gt;
(70)普林斯顿大学博士贾登：&amp;lt;//www.cs.princeton.edu/~jiadeng/&amp;gt;&lt;br&gt;
(71)牛津大学教授Andrew Zisserman： &amp;lt;//www.robots.ox.ac.uk/~az/&amp;gt;&lt;br&gt;
(72)英国leeds大学研究员Mark Everingham:&amp;lt;//www.comp.leeds.ac.uk/me/&amp;gt;&lt;br&gt;
(73)英国爱丁堡大学教授Chris William: &amp;lt;//homepages.inf.ed.ac.uk/ckiw/&amp;gt;&lt;br&gt;
(74)微软剑桥研究院研究员John Winn: &amp;lt;//johnwinn.org/&amp;gt;&lt;br&gt;
(75)佐治亚理工学院教授Monson H.Hayes：&amp;lt;//savannah.gatech.edu/people/mhayes/index.html&amp;gt;&lt;br&gt;
(76)微软亚洲研究院研究员孙剑：&amp;lt;//research.microsoft.com/en-us/people/jiansun/&amp;gt;&lt;br&gt;
(77)微软亚洲研究院研究员马毅：&amp;lt;//research.microsoft.com/en-us/people/mayi/&amp;gt;&lt;br&gt;
(78)英国哥伦比亚大学教授David Lowe: &amp;lt;//www.cs.ubc.ca/~lowe/&amp;gt;&lt;br&gt;
(79)英国爱丁堡大学教授Bob Fisher: &amp;lt;//homepages.inf.ed.ac.uk/rbf/&amp;gt;&lt;br&gt;
(80)加州大学圣地亚哥分校教授Serge J.Belongie:&amp;lt;//cseweb.ucsd.edu/~sjb/&amp;gt;&lt;br&gt;
(81)威斯康星大学教授Charles R.Dyer: &amp;lt;//pages.cs.wisc.edu/~dyer/&amp;gt;&lt;br&gt;
(82)多伦多大学教授Allan.Jepson: &amp;lt;//www.cs.toronto.edu/~jepson/&amp;gt;&lt;br&gt;
(83)伦斯勒理工学院教授Qiang Ji: &amp;lt;//www.ecse.rpi.edu/~qji/&amp;gt;&lt;br&gt;
(84)CMU研究员Daniel Huber: &amp;lt;//www.ri.cmu.edu/person.html?person_id=123&amp;gt;&lt;br&gt;
(85)多伦多大学教授：David J.Fleet: &amp;lt;//www.cs.toronto.edu/~fleet/&amp;gt;&lt;br&gt;
(86)伦敦大学玛丽女王学院教授Andrea Cavallaro:&amp;lt;//www.eecs.qmul.ac.uk/~andrea/&amp;gt;&lt;br&gt;
(87)多伦多大学教授Kyros Kutulakos: &amp;lt;//www.cs.toronto.edu/~kyros/&amp;gt;&lt;br&gt;
(88)杜克大学教授Carlo Tomasi: &amp;lt;//www.cs.duke.edu/~tomasi/&amp;gt;&lt;br&gt;
(89)CMU教授Martial Hebert: &amp;lt;//www.cs.cmu.edu/~hebert/&amp;gt;&lt;br&gt;
(90)MIT助理教授Antonio Torralba: &amp;lt;//web.mit.edu/torralba/www/&amp;gt;&lt;br&gt;
(91)马里兰大学研究员Yasel Yacoob: &amp;lt;//www.umiacs.umd.edu/users/yaser/&amp;gt;&lt;br&gt;
(92)康奈尔大学教授Ramin Zabih: &amp;lt;//www.cs.cornell.edu/~rdz/&amp;gt;&lt;br&gt;
(93)CMU博士田渊栋: //www.cs.cmu.edu/~yuandong/&lt;br&gt;
(94)CMU副教授Srinivasa Narasimhan: //www.cs.cmu.edu/~srinivas/&lt;br&gt;
(95)CMU大学ILIM实验室：//www.cs.cmu.edu/~ILIM/&lt;br&gt;
(96)哥伦比亚大学教授Sheer K.Nayar: //www.cs.columbia.edu/~nayar/&lt;br&gt;
(97)三菱电子研究院研究员Fatih Porikli ：//www.porikli.com/&lt;br&gt;
(98)康奈尔大学教授Daniel Huttenlocher：//www.cs.cornell.edu/~dph/&lt;br&gt;
(99)南京大学教授周志华：//cs.nju.edu.cn/zhouzh/index.htm&lt;br&gt;
(100)芝加哥丰田技术研究所助理教授Devi Parikh: //ttic.uchicago.edu/~dparikh/index.html&lt;br&gt;
(101)瑞士联邦理工学院博士后Helmut Grabner:&amp;lt;//www.vision.ee.ethz.ch/~hegrabne/#Short_CV&amp;gt;&lt;br&gt;
(102)香港中文大学教授贾佳亚：&amp;lt;//www.cse.cuhk.edu.hk/~leojia/index.html&amp;gt;&lt;br&gt;
(103)南洋理工大学副教授吴建鑫：&amp;lt;//c2inet.sce.ntu.edu.sg/Jianxin/index.html&amp;gt;&lt;br&gt;
(104)GE研究院研究员李关：&amp;lt;//www.cs.unc.edu/~lguan/&amp;gt;&lt;br&gt;
(105)佐治亚理工学院教授Monson Hayes:&amp;lt;//savannah.gatech.edu/people/mhayes/&amp;gt;&lt;br&gt;
(106)图片检索国际会议VOC(微软剑桥研究院组织):&amp;lt;//pascallin.ecs.soton.ac.uk/challenges/VOC/&amp;gt;&lt;br&gt;
(107)机器视觉开源处理库汇总：&amp;lt;//archive.cnblogs.com/a/2217609/&amp;gt;&lt;br&gt;
(108)布朗大学教授Benjamin Kimia: &amp;lt;//www.lems.brown.edu/kimia.html&amp;gt;&lt;br&gt;
(109)数据堂-图像处理相关的样本数据：&amp;lt;//www.datatang.com/data/list/602026/p1&amp;gt;&lt;br&gt;
 &lt;br&gt;
整理的内容不见得完善，也不见得能满足所有朋友的需要。如果您有更好的网站资源，欢迎推荐给我。另外，如果你不想记录所有这些链接，也可以去我的博客，所有这些网址在我的博客都有链接。而且，以后我还会不断更新！我的博客是：&lt;a href="//blog.csdn.net/carson2005" target="_blank"&gt;//blog.csdn.net/carson2005&lt;/a&gt;&lt;br&gt;
&lt;a href="//blog.csdn.net/carson2005/article/details/6586635"&gt;推荐一些计算机视觉相关的书籍&lt;/a&gt;&lt;br&gt;
经常碰到有人问我关于计算机视觉（机器视觉）领域的入门书籍或者相关书籍，下面我就推荐一些自己看的，当然，不见得满足所有人的需求，不过，还是真诚的希望能对你有所帮助。&lt;br&gt;
(1)数字图像处理，冈萨雷斯，阮秋琦（译），电子工业出版社；&lt;br&gt;
(2)opencv基础篇，于仕琦，刘瑞祯，北京航空航天大学出版社；&lt;br&gt;
(3)Learning OpenCV computer vision with the opencv library, Gary Bradski, Adrian Kaebler, O’REILLY&lt;br&gt;
(4)模式识别，边肇琪，张学工，清华大学出版社；&lt;br&gt;
(5)模式分类，Richard O. Duda, 机械工业出版社的；好像是CMU的教科书，很经典了，国外模式识别领域的经典教材；&lt;br&gt;
(6)机器学习，Mitchell,曾华军（译），机械工业出版社；&lt;br&gt;
(7)Computer Vision: Algorithms and Applications， Richard szeliski，该书去年刚完成，前几天才面世，貌似没见到中文版，不过，可以在他的主页上下载到英文电子版。他的主页在我的博客(&amp;lt;//blog.csdn.net/carson2005&amp;gt;)里面有链接。&lt;br&gt;
(8)Pattern Recognition &amp;amp; Machine Learning, M.Bishop, Springer.这本书，目前还没有中文版的，英文原版的也有点贵，不过，网上倒是可以找到电子版的。&lt;br&gt;
本人水平有限，能提供的暂时就这么多，朋友们有好书也别忘了给我推荐推荐。&lt;/p&gt;</description></item><item><title>google code上几个图形学相关的项目</title><link>https://blog.perillaroc.wang/post/2012/2012-02-10-google-codee4b88ae587a0e4b8aae59bbee5bda2e5ada6e79bb8e585b3e79a84e9a1b9e79bae/</link><pubDate>Fri, 10 Feb 2012 15:20:32 +0000</pubDate><guid>https://blog.perillaroc.wang/post/2012/2012-02-10-google-codee4b88ae587a0e4b8aae59bbee5bda2e5ada6e79bb8e585b3e79a84e9a1b9e79bae/</guid><description>&lt;p&gt;[&lt;/p&gt;</description></item></channel></rss>