Python与图像处理4

来源:互联网 发布:康熙字典体 mac 编辑:程序博客网 时间:2024/05/16 06:08

1. 肩宽测量

自然挺胸抬头。用软尺沿身体背面的两肩端点水平测量,不可过松或太紧,得出的测量尺寸。


2. 胸围测量

自然挺胸抬头。沿胸部隆起的最高点,用软尺水平围绕身体一周,软尺恰好相连,不可过松或太紧,得出的测量尺寸即为上胸围尺寸。


3. 腰围测量

自然站直,挺胸抬头。上身与下身连接处最为纤细的部分即为腰部。用软尺沿腰部水平围绕一周,软尺恰好相连,不可过松或太紧,得出的尺寸即为腰围。


4. 臀围测量

然站直,挺胸抬头。用软尺沿下身臀部自然隆起的最高点水平围绕一周,软尺恰好相连,不可过松或太紧,得出的尺寸即为臀围。


5. 臂长测量

自然伸直臂部,用软尺沿臂部与手掌的连接处即手腕到肩部最顶端进行测量,不可过松或太紧,得出的测量尺寸即为臂部的长度。

6. 腿长测量

自然站直,挺胸抬头。用软尺测量从腰部到脚踝的垂直长度,得出的尺寸即为腿长。



7. Haar特征分类器 

解析:

Haar特征分类器是一个XML文件,该文件中会描述人体各个部位的Haar特征值。包括人脸、眼睛、嘴唇等。

cv2.CascadeClassifier.detectMultiScale(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize]]]]]) → objects

(1)scaleFactor:表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%。

(2)minNeighbors:表示构成检测目标的相邻矩形的最小个数,默认值为3个。

(3)minSize和maxSize:用来限制得到的目标区域的范围。

说明:rightears = rightearCascade.detectMultiScale(roi_faceProfile,scaleFactor= 1.01,minNeighbors = 2,minSize = (5, 5),maxSize=(10,10))。


8. Hog行人检测算法

解析:利用Hog进行特征提取,利用线性SVM作为分类器,从而实现行人检测。


9. 图像检索

解析:基于内容的图像检索技术(Content-Based Image Retrieval,CBIR)的搜索引擎,即以图搜图,其中这些搜索引擎的检索结果融合了多模态的检索(文本、图片内容、上下文等)。


10. 连通区域分析算法 [4]

解析:

连通区域(Connected Component)一般是指图像中具有相同像素值且位置相邻的前景像素点组成的图像区域(Region,Blob)。连通区域分析(Connected Component Analysis,Connected Component Labeling)是指将图像中的各个连通区域找出并标记。连通区域分析的应用场景有OCR识别中字符分割提取(车牌识别、文本识别、字幕识别等)、视觉跟踪中的运动前景目标分割与提取(行人入侵检测、遗留物体检测、基于视觉的车辆检测与跟踪等)、医学图像处理(感兴趣目标区域提取)等。连通区域分析常用的算法有(1)Two-Pass法;(2)Seed-Filling种子填充法。


11. 手机陀螺仪作用 [5]

解析:

(1)导航。

(2)摄影。

(3)游戏。

(4)输入设备。

(5)增强现实。


12. 背景色和前景色


13. 图像锐化

解析:图像锐化是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,分为空域处理和频域处理两类。图像锐化是用高通滤波器(Roberts,Sobel,Prewitt,Laplacian)来完成,在空域中,接近原点处为正,在远离原点处为负。


14. 图像梯度

解析:由于图像在计算机中以数字图像的形式进行存储,即图像是离散的数字信号,对数字图像的梯度使用差分来代替连续信号中的微分。

(1)Roberts梯度


(2)Sobel梯度


(3)Prewitt梯度


(4)Laplacian梯度



说明:把图像看成二维离散函数,图像梯度就是这个二维离散函数的求导。各向同性滤波器是旋转不变的,即将原图像旋转后进行滤波处理给出的结果与先对图像滤波然后再旋转的结果相同。最简单的各向同性微分算子是拉普拉斯算子,并且它是一个线性算子。


15. Numpy中的傅里叶变换

解析:

(1)fft:The one-dimensional FFT.

(2)ifft:Compute the one-dimensional inverse discrete Fourier Transform.

(3)fft2:Compute the 2-dimensional discrete Fourier Transform.

(4)ifft2:The inverse two-dimensional FFT.

(5)fftn:The n-dimensional FFT.

(6)ifftn:The n-dimensional inverse FFT.

(7)fftshift:Shifts zero-frequency terms to the center of the array. For two-dimensional input, swaps first and third 

quadrants, and second and fourth quadrants.

(8)ifftshift:The inverse of fftshift.

相关代码,如下所示:

import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread("chengzi.jpg", 0)f = np.fft.fft2(img)fshift = np.fft.fftshift(f)magnitude_spectrum = 20*np.log(np.abs(fshift))rows, cols = img.shapecrow,ccol = rows/2 , cols/2fshift[crow-30:crow+30, ccol-30:ccol+30] = 0f_ishift = np.fft.ifftshift(fshift)img_back = np.fft.ifft2(f_ishift)img_back = np.abs(img_back)plt.subplot(221),plt.imshow(img, cmap = 'gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(222),plt.imshow(magnitude_spectrum, cmap = 'gray')plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])plt.subplot(223),plt.imshow(img_back)plt.title('Result in JET'), plt.xticks([]), plt.yticks([])plt.subplot(224),plt.imshow(img_back, cmap = 'gray')plt.title('Image after HPF'), plt.xticks([]), plt.yticks([])plt.show()


16. OpenCV中的傅里叶变换

解析:相关代码,如下所示:

import numpy as npimport cv2from matplotlib import pyplot as pltimg = cv2.imread('chengzi.jpg', 0)dft = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)dft_shift = np.fft.fftshift(dft)magnitude_spectrum = 20*np.log(cv2.magnitude(dft_shift[:,:,0], dft_shift[:,:,1]))rows, cols = img.shapecrow, ccol = rows/2, cols/2mask = np.zeros((rows, cols, 2), np.uint8)mask[crow-30:crow+30, ccol-30:ccol+30] = 1# apply mask and inverse DFTfshift = dft_shift*maskf_ishift = np.fft.ifftshift(fshift)img_back = cv2.idft(f_ishift)img_back = cv2.magnitude(img_back[:,:,0], img_back[:,:,1])plt.subplot(131),plt.imshow(img, cmap = 'gray')plt.title('Input Image'), plt.xticks([]), plt.yticks([])plt.subplot(132),plt.imshow(magnitude_spectrum, cmap = 'gray')plt.title('Mag1 Spectrum'), plt.xticks([]), plt.yticks([])plt.subplot(133),plt.imshow(img_back, cmap = 'gray')plt.title('Mag2 Spectrum'), plt.xticks([]), plt.yticks([])plt.show()


17. 特征匹配和单应性

解析:使用一个查询图像,在其中找到一些特征点(关键点),又在另一幅图像中也找到了一些特征点,最后对这两幅图像之间的特征点进行匹配。简单来说就是在一张杂乱的图像中找到了一个对象(的某些部分)的位置。这些信息足以帮助在目标图像中准确的找到(查询图像)对象。为了达到这个目的,可以使用calib3d模块中的cv2.findHomography()函数。如果将这两幅图像中的特征点集传给这个函数,它会找到这个对象的透视变换。然后就可以使用函数cv2.perspectiveTransform()找到这个对象。至少要4个正确的点才能找到这种变换。在匹配过程可能会有一些错误,而这些错误会影响最终结果。为了解决这个问题,算法使用RANSAC和LEAST_MEDIAN(可以通过参数来设定)。所以好的匹配提供的正确的估计被称为inliers,剩下的被称为outliers。cv2.findHomography()返回一个掩模,这个掩模确定了inlier和outlier点。OpenCV中的特征匹配包括蛮力(Brute-Force)匹配和FLANN匹配。

说明:随机抽样一致性(RANSAC)算法,可以在一组包含“外点”的数据集中,采用不断迭代的方法,寻找最优参数模型,不符合最优模型的点被定义为“外点”,该算法在图像配准及拼接上得到广泛应用。[6]


参考文献:

[1] 肩宽、胸围、臀围、臂长、腿长的正确测量:http://www.longfeng.com/dapei/show-3637.html

[2] OpenCV原理解读之HAAR+Adaboost:http://blog.csdn.net/xidianzhimeng/article/details/40085537

[3] 利用Hog特征和SVM分类器进行行人检测:http://blog.csdn.net/carson2005/article/details/7841443

[4] OpenCV连通区域分析:http://blog.csdn.net/icvpr/article/details/10259577

[5] 手机陀螺仪有什么用:http://zhidao.baidu.com/link?url=j-FeeSnXC-7fDAZT0SgrYOK48JVkzdOFt9ANJ7Ay2gS1c7wEm8upDI6_aIdPmxjHs459HDmcN5l6idC8YKzfgq

[6] 特征匹配RANSAC算法原理与源码解析:http://blog.csdn.net/luoshixian099/article/details/50217655

1 0
原创粉丝点击