图像相似度算法
更新时间:2023-03-18 23:54:01 阅读量: 人文社科 文档下载
一种图像相似度匹配的算法,
1、图片大小规格化
为了比较两个图像,应该使其大小完全一致,这里可以设置为两个图片中较大的那个大小,长宽。
function Resize(const Source: TBitmap; var Dest: TBitmap): Boolean;
begin
if not Assigned(Dest) then
Dest := TBitmap.Create;
Dest.pixelformat := pf24bit;
Dest.Width := BMPWIDTH;
Dest.Height := BMPHEIGHT;
Dest.Canvas.CopyRect(Rect(0, 0, Dest.Width - 1, Dest.Height - 1), Source.Canvas, Rect(0, 0, Source.Width - 1, Source.Height - 1));
end;
2、图像灰度化
图像灰度化的方法有多种,这里介绍两种。一种是绝对平均值,一种是加权平均值。其实质就是将RGB三原色的色值相加,平均后赋予新值。不同的只是RGB三原色的权重不同。
绝对平均值
function Gray1(const Source: TBitmap): Boolean;
var
p : PByteArray;
w : Integer;
i, j : Integer;
begin
for i := 0 to Source.Height - 1 do
begin
p := Source.ScanLine[i];
for j := 0 to (Source.Width - 1) do
begin
w := p[3 * j] + p[3 * j + 1] + p[3 * j + 2];
w := w div 3;
w := byte(w);
一种图像相似度匹配的算法,
p[3 * j] := w;
p[3 * j + 1] := w;
p[3 * j + 2] := w;
end;
end;
end;
加权平均值
function TForm1.Gray2(const Source: TBitmap): Boolean;
var
p : PByteArray;
w : Integer;
i, j : Integer;
begin
for i := 0 to Source.Height - 1 do
begin
p := Source.ScanLine[i];
for j := 0 to (Source.Width - 1) do
begin
w := (p[3 * j] * 28 + p[3 * j + 1] * 151 + p[3 * j + 2] * 77);
w := w div 3;
w := byte(w);
p[3 * j] := w;
p[3 * j + 1] := w;
p[3 * j + 2] := w;
end;
end;
end;
3、抽取直方图
由于是灰度图,所以只会有256种灰度值,计算直方图
function GetHisogram(const Source: TBitmap; var His: TSamp): Boolean; var
i, j, c : Integer;
p : PByteArray;
一种图像相似度匹配的算法,
begin
try //取样
for i := 0 to 255 do
His[i] := 0;
for i := 0 to Source.Height - 1 do
begin
p := Source.ScanLine[i];
for j := 0 to Source.Width - 1 do
begin
c := p^[j * 3];
Inc(His[c]);
end;
end;
finally
tb.Free;
end;
end;
4、判断相似度
这里采用的是一个公式,
直方图抽样个数。
,g,s分别为两附图片的直方图,N为
function GetSimilar(const HisA, HisB: TSamp): Double; var
i, j : Integer;
function DivideAbs(const NumA, NumB: Integer): Double; var
一种图像相似度匹配的算法,
Tabs : Integer;
begin
Tabs := Abs(NumA - NumB);
if NumA >= NumB then
Result := NumA
else
Result := NumB;
if Result <> 0 then
Result := Tabs / Result;
end;
begin
Result := 0.0;
if Length(HisA) <> Length(HisB) then
Exit;
for i := 0 to Length(HisA) do
begin
Result := Result + 1 - DivideAbs(HisA[i], HisB[i]); end;
Result := Result / Length(HisA);
end;
正在阅读:
图像相似度算法03-18
描写猫的作文600字07-14
十三五“课题”益智课堂与思考力的实践研究开题报告(部分)10-22
大学生卫生巾市场调查报告06-16
超星尔雅大学生职业生涯规划参考与答案05-02
谁的江山作文500字02-04
《设计院机电设计任务书》03-27
这是人生的一笔财富作文500字07-13
金融营销实务09-03
- 粮油储藏基础知识
- 论文范文(包括统一封面和内容的格式)
- 经典解题方法
- 综合部后勤办公用品管理办法+领用表
- 学生宿舍突发事件应急预案
- 16秋浙大《生理学及病理生理学》在线作业
- 四分比丘尼戒本(诵戒专用)
- 浙江财经大学高财题库第一章习题
- 九大员岗位职责(项目经理、技术负责人、施工员、安全员、质检员、资料员、材料员、造价员、机管员)
- 旅游财务管理习题(学生版)
- 德阳外国语高二秋期入学考试题
- 投资学 精要版 第九版 第11章 期权市场
- 控制性详细规划城市设计认识
- bl03海运提单3国际贸易答案
- 2010-2011学年湖北省武汉市武珞路中学七年级(上)期中数学试卷
- VB程序填空改错设计题库全
- 教师心理健康案例分析 - 年轻班主任的心理困惑
- 民间借贷司法解释溯及力是否适用?
- 三联书店推荐的100本好书
- 《化工原理》(第三版)复习思考题及解答
- 算法
- 图像
- 相似
- 小学三年级上语文《掌声》导学案
- 2016-2020年中国设施农业投资分析及前景预测报告
- 09年卫生监督工作总结-最新年精选文档
- 无机玻璃钢保温鸡舍
- 拼音教学是小学生学习语文的基础
- 废弃电器电子产品处理资格许可管理办法(征求意见稿)
- 义务维修总结书
- 降低普外科手术切口感染率的临床心得
- 第六章 数列教案
- 徐汇区2014年数学初三一模(题目&答案)
- 黑枸杞价格
- 当前农村基层组织建设中存在问题
- 公路沥青路面采用橡胶改性沥青的建议
- sap 2000质量源疑问解答
- 《葛底斯堡演说》汉语翻译
- 单拐曲轴零件的机械加工工艺规程及工艺装备设计1
- 神经网络在滚动轴承故障诊断中的应用
- 实验数据分析
- 外贸销售合同范本
- 第2章 股票收益计算(金融计算与建模-清华大学,朱世武)