【图像处理】人眼区域分割(1)

2024-03-07 16:59

本文主要是介绍【图像处理】人眼区域分割(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

人眼区域分割(1)

通过尝试计算水平灰度曲线来定位人眼。因为人眼周围灰度变化明显,可以通过灰度曲线图来确定眼睛所在的水平方向坐标。
##步骤:

  1. 灰度化

  2. 求水平方向的灰度投影曲线

    P ( i ) = ∑ j = 1 n M ( i , j ) P(i)= \sum\limits_{j=1}^{n}M(i,j) P(i)=j=1nM(i,j)

图像在内存中庸MxN的矩阵存储,i,j为矩阵的行列。图像的水平灰度投影曲线,其横坐标为矩阵的行号,纵坐标为矩阵每行元素之和(即为图片中每行像素值的和)。则该曲线实则包含了图像每行像素值和的变化。

  1. 在灰度曲线求取的基础上,求出该曲线的波峰和波谷,因黑色灰度值为0,白色的灰度值为255,则在波谷中包含眼睛等灰度值较小区域的坐标信息。实现方法:用matlab的findpeaks.

pks = findpeaks(data)
[pks,locs] = findpeaks(data)
pks为峰值,locs为峰值所在横坐标值

  1. 对波峰波谷横坐标所代表的图像的行信息画出,在这里注意对应关系

|——————————x(矩阵的列标)
|
|
|
|
|
y(矩阵的行标)

灰度投影曲线的波谷与人脸图片的具体对应关系:

波峰和波谷对应的人脸矩阵的行:

##需要注意的地方:
要对该水平投影曲线进行一定的平滑处理,使曲线避免小幅抖动。使波峰波谷定位稳定便于下一步提取包含眼睛区域的图片。

利用滤波函数平滑曲线:

平滑曲线与未平滑对应的图片的行号,(红色为平滑后,绿色为未平滑):

平滑之后条数变少,干扰变少
##实现:
利用matlab实现并验证正确性,因为matlab内有丰富的数学函数。

matlab代码:

clear;
close all;
%求图像的水平方向灰度投影曲线
img=imread('face9.jpg');
gray=rgb2gray(img);
row=size(gray,1);
col=size(gray,2);
%[m,n]=size(img);
%若在未转换为灰度图片时矩阵的列元素为灰度的列元素乘以3
for i=1:row%行count(i)=sum(img(i,1:col));%每行的像素值
end%画图
x=1:1:row;
figure;
plot(x,count);
title('水平方向');
hold on;
% [pks,locs] = findpeaks(count);
% 若加以限制峰值数量会变少
[pks,locs] = findpeaks(count,'minpeakdistance',20);
plot(locs,pks,'*','color','r');
hold on;
[min,locmin]=findpeaks(-count,'minpeakdistance',20);%峰值之间的最小间隔
plot(locmin,count(locmin),'x','color','g');
hold off;figure;
imshow(img);
title('波峰');
hold on;
for i=1:length(locs)y=line([0,col],[locs(i),locs(i)]);set(y,'linestyle','-','color','green');
end
hold off;figure;
imshow(img);
title('波谷');
hold on;
for i=1:length(locmin)y=line([0,col],[locmin(i),locmin(i)]);set(y,'linestyle','-','color','green');
end
hold off;

##总结:
上述是通过matlab验证了水平灰度投影曲线与人脸部分的对应关系,则初步确定在图片上半部分的波谷的横坐标即为眼睛所在的y轴坐标。

这篇关于【图像处理】人眼区域分割(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/784218

相关文章

参会邀请 | 第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)将于2024年9月13日-15日在中国张家口召开。 MVIPIT 2024聚焦机器视觉、图像处理与影像技术,旨在为专家、学者和研究人员提供一个国际平台,分享研究成果,讨论问题和挑战,探索前沿技术。诚邀高校、科研院所、企业等有关方面的专家学者参加会议。 9月13日(周五):签到日 9月14日(周六):会议日 9月15日(周日

08_Tensorflow2图像处理秘籍:让图片‘听话’,AI也能成艺术家!

1. 图像数据处理 图像处理是指图像在神经网络训练之前的预处理,是人工智能视觉领域的重要组成部分。通过图像处理技术对图像数据集进行处理有两方面的作用:(1)将原始数据集处理成合格的、规范是数据集;(2)通过图像处理技术实现对原始数据集的增广。 # 库引入import matplotlib.pyplot as pltimport tensorflow as tf# 图像读取image_

python图像处理的图像几何变换

一.图像几何变换 图像几何变换不改变图像的像素值,在图像平面上进行像素变换。适当的几何变换可以最大程度地消除由于成像角度、透视关系乃至镜头自身原因所造成的几何失真所产生的负面影响。几何变换常常作为图像处理应用的预处理步骤,是图像归一化的核心工作之一[1]。 一个几何变换需要两部分运算: 空间变换:包括平移、缩放、旋转和正平行投影等,需要用它来表示输出图像与输入图像之间的像素映射关系。灰度插值

从零开始学cv-0:图像处理基础知识

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一,图像分类1.1、模拟图像1.2、数字图像 二、颜色模式(颜色存储)2.1、RGB模式(发光模式)2.2、CMYK模式2.3、HSB模式2.4、Lab模式2.5、位图模式(Bitmap Mode)2.6、灰度模式(Grayscale Mode)2.7、索引颜色模式(Indexed Color Mode)

图像处理基础篇-镜像仿射透视

一.图像镜像 图像镜像是图像旋转变换的一种特殊情况,通常包括垂直方向和水平方向的镜像。水平镜像通常是以原图像的垂直中轴为中心,将图像分为左右两部分进行堆成变换。如图7-1所示: 垂直镜像通常是以原图像的水平中轴线为中心,将图像划分为上下两部分进行堆成变换的过程,示意图如图7-2所示。 在Python中主要调用OpenCV的flip()函数实现图像镜像变换,函数原型如下: dst =

在c#下用opencv(emgecv)做图像处理环境配置

①首先要将编程环境配置好。 ⑴首先将vs2010下载安装,然后下载了emgucv-windows-universal-cuda 2.9.0.1922放在了D:\CV的目录下 (注意:emgucv-windows-universal-cuda 2.9.0.1922所放置的目录与后面的path配置有关,所以这里加以说明,也可以放在其他位置,但后面的path也要相应的改变)。 ⑵接着,要配置p

图像处理:基于直方图矫正的图像色彩均衡

from itertools import chainimport cv2import osimport numpy as npimport datetimeclass BrightnessBalance:def __init__(self):passdef arrayToHist(self,gray):'''计算灰度直方图,并归一化:param gray_path::return:'''

MARK图像处理与计算机视觉基础,经典以及最近发展

图像处理与计算机视觉的经典书籍 *************************************************************************************************************** 本文章的源作者是   杨晓冬  (个人邮箱:xdyang.ustc@gmail.com)。 原文的链接是 http://www.iask.

图像处理面试方法和前景

最近版上有不少人在讨论图像处理的就业方向,似乎大部分都持悲观的态度。我想结合我今年找工作的经验谈谈我的看法。就我看来,个人觉得图像处理的就业还是不错的。首先可以把图像看成二维、三维或者更高维的信号,从这个意义上来说,图像处理是整个信号处理里面就业形势最好的,因为你不仅要掌握(一维)信号处理的基本知识,也要掌握图像处理(二维或者高维信号处理)的知识。其次,图像处理是计算机视觉和视频处理的基础,掌握好

图像处理---二义性、通路长度、Dm距离的概念

---------------------------------------------------------------------------------------------------------————————————----— 今天终将成为我们回不去的昨天!想做就做,就是现在! ----------------------------------