Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 人工智能 > 计算机视觉/图像处理
计算机视觉/图像处理 A discussion board for Computer Vision & Digital image processing.
回复
 
主题工具 显示模式
旧 2010-06-01, 11:04   #1
炮白101
初级会员
 
注册日期: 2010-06-01
帖子: 2
声望力: 0
炮白101 正向着好的方向发展
默认 将视频镜头分类

我研究的是视频镜头的分类算法,原来是基于图像的灰度直方图计算帧图像的相似度矩阵,先需要进行改进,即将图像的灰度特征与纹理特征结合以后计算相似度矩阵,我在这里遇到了平静希望得到大家的帮助,原基于灰度的程序如下:
clc;
clear all;
image_total_amount=1771; %总的帧数
A=imread('C:\Documents and Settings\Administrator\桌面\NERF_shop_clustering\imagedata\1.bmp');
A_grey=RGB2Gray(A);
A_row=size(A_grey,1);
A_column=size(A_grey,2);
toal_pixles_Per_frame=A_row*A_column; %每帧所含的像素数,便于直方图归一化。

% 将所有帧进行直方图(Bin_number=64)转换,存入向量数组HIST_vectors_for_all_frames中。
sprintf('所有帧进行直方图(Bin_number=64)转换,存入向量数组HIST_vectors_for_all_frames中')
Bin_number=64;
HIST_vectors_for_all_frames=zeros(image_total_amount,Bin_number);%存访直方图的大矩阵
for Image_index=1:image_total_amount
Image_index %显示进度
A=imread(sprintf('%s%d%s','C:\Documents and Settings\Administrator\桌面\NERF_shop_clustering\imagedata\',Image_index,'.bmp'));
%imshow(A);
A_grey=RGB2Gray(A);
HIST_vectors_for_all_frames(Image_index,=imhist(A_grey,Bin_number)/toal_pixles_Per_frame; %归一化直方图
end

% 直方图相交法计算similarity 矩阵
sprintf('直方图相交法计算similarity 矩阵')
a_constant=8.2; % extent control,
c_constant=0.5; % as a threshold,这里c_constant=0.5,以使0.5映射为0.5,人眼观察到的相似度,与计算得到的相似度距离是负指数关系。
Disimilarity_matrix=zeros(image_total_amount,image_total_amount); %所有帧的disimialrity关系存放于一个矩阵中
Disimilarity_matrix_EXP_extended=zeros(image_total_amount,image_total_amount);
Length_of_A=Bin_number; %直方图向量的维数
for hist_index_01=1:image_total_amount
hist_index_01 %显示进度
A=HIST_vectors_for_all_frames(hist_index_01,;
for hist_index_02=hist_index_01:image_total_amount
B=HIST_vectors_for_all_frames(hist_index_02,;
similarity_A_B=0;
for elememt_counting=1:Length_of_A
similarity_A_B=similarity_A_B+min(A(elememt_counting),B(elememt_counting));
end
%%% A、B越相似,similarity_A_B越大,反之越小.完全相似时
%%% similarity_A_B=1;则Disimilarity=1-similarity_A_B.
Disimilarity_A_B=1-similarity_A_B;
Disimilarity_matrix(hist_index_01,hist_index_02)=Disimilarity_A_B;
Disimilarity_matrix(hist_index_02,hist_index_01)=Disimilarity_matrix(hist_index_01,hist_index_02);

% distance_A_B=distance_A_B/3; % 因为sum(A)=sum(B)=3
Disimilarity_A_B_EXP_extended=1/(1+exp(-a_constant*(Disimilarity_A_B-c_constant)));%将[1 0]之间的disimilarity,转换为指数的下的[1 0],且原来0.5转换为同样的0.5.
Disimilarity_matrix_EXP_extended(hist_index_01,hist_index_02)=Disimilarity_A_B_EXP_extended;
Disimilarity_matrix_EXP_extended(hist_index_02,hist_index_01)=Disimilarity_matrix_EXP_extended(hist_index_01,hist_index_02);
end
end
clear HIST_vectors_for_all_frames;
save Disimilarity_matrix;
save Disimilarity_matrix_EXP_extended;
炮白101 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 01:13


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.