K-L变换原理、图像压缩与人脸识别实战(附matlab代码)

11 篇文章 17 订阅
4 篇文章 1 订阅

摘要

在这里插入图片描述

在这里插入图片描述

K-L变换的基本原理

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

K-L变换在图像压缩中的应用

研究背景及意义

在这里插入图片描述

数字图像压缩与发展现状

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

K-L变换与图像压缩

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

K-L变换在人脸识别中的应用

人脸识别

在这里插入图片描述

K-L变换实现人脸识别

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

总结

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

参考文献

在这里插入图片描述

matlab代码

1.	clear   
2.	%set the block size q   
3.	q=2;                                                                          
4.	face = imread('faces/1.bmp');   
5.	face = imresize(face,[256 256]);   
6.	   
7.	face = im2double(face);   
8.	subplot(1,2,1)   
9.	imshow(face)   
10.	[m,n] = size(face);          
11.	%initialize the parameters   
12.	b = [];                                                                       
13.	B = [];   
14.	   
15.	%divide the image into q*q blocks   
16.	for i = 1:m/q                                                                  
17.	    for j = 1:n/q   
18.	        t_l = (i-1)*q+1;   
19.	        t_r = (i-1)*q+q;   
20.	        b_l = (j-1)*q+1;   
21.	        b_r = (j-1)*q+q;   
22.	        block = face(t_l:t_r,b_l:b_r);   
23.	         %get the blocks and order them lexicographically to form vector   
24.	        bias = reshape(block,1,q^2);                                           
25.	        B = [B;bias];   
26.	    end   
27.	end   
28.	%compute the covariance matrix C   
29.	C = cov(B);      
30.	%get eigenvalues and eigenvectors   
31.	[V,D] = eig(C);                                                                 
32.	e = diag(D);   
33.	error=[];   
34.	   
35.	%utilize K-L Transform   
36.	c = V'*B';   
37.	k = 1;   
38.	X = V(:,4)*c(4,:);   
39.	X = X';   
40.	%Reformat the image   
41.	for i=1:m/q                                                                     
42.	    for j=1:n/q   
43.	        y1=reshape(X(k,1:q^2),q,q);   
44.	        ii=(i-1)*q+1;   
45.	        jj=(j-1)*q+1;   
46.	        final(ii:ii+q-1,jj:jj+q-1)=y1;   
47.	        k=k+1;   
48.	    end   
49.	end   
50.	subplot(1,2,2)   
51.	final = reshape(final,[m m 3]);   
52.	imshow(final)   
53.	   
54.	   
55.	   
56.	 clear;   
57.	Files = dir('faces\*.bmp');  %打开文件夹中所有图像   
58.	dir = 'faces\';   
59.	for k = 1:length(Files)   
60.	    Filename = [dir, Files(k).name];   
61.	    img = imread(Filename);   
62.	    img = trans(img);   
63.	    x(k,:) = img(:)';     
64.	end   
65.	   
66.	C =cov(x);   
67.	[V,D] = eig(C);     
68.	c = V'*x';   
69.	   
70.	eigface = reshape(V(:,end)*32,size(img));   
71.	imshow(eigface)  %本征脸   
72.	d = diag(D);   
73.	info = 0;   
74.	info_sum = sum(d);   
75.	k = 0;   
76.	for i = 1:length(d)   
77.	    info = info + d(length(d)-i+1);   
78.	    if info/info_sum > 0.99   
79.	        k = i;   
80.	        break   
81.	    end   
82.	end   
83.	   
84.	% 恢复   
85.	figure(2)   
86.	xx = [V(:,1:end)*c(1:end,:)]';   
87.	faces = [];   
88.	for i = 1:length(Files)   
89.	    faces = [faces,reshape(xx(i,:),size(img))];   
90.	end   
91.	imshow(faces)   
92.	   
93.	% 比对识别   
94.	test = imread('zhb.bmp');   
95.	test = trans(test);   
96.	test = test(:);   
97.	c_test = V(:,end-k+1:end)'*test;   
98.	c_known = c(end-k+1:end,:);   
99.	dist = sum((c_known - c_test).^2).^(0.5);   
100.	[num,index] = min(dist);   
101.	disp([dir, Files(index).name])   
102.	   
103.	   
104.	function img = trans(img)   
105.	    img = imresize(img,[64 64]);   
106.	    img = rgb2gray(img);   
107.	    img = im2double(img);   
108.	end  

致谢

过了一年才想起来把之前写的大作业发出来,代码实现是由zhb完成的,测试和ppt是fy做的
在这里插入图片描述
ps:本人不搞模式识别,这个大报告仅供本科阶段课程参考,如有错误请一笑了之。

  • 21
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值