简介:
前面几篇文章介绍了一些比较基本的基于灰度的图像配准算法:
基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法
本文将介绍一种类似的相似度测量算法,叫做划分强度一致法(Partitioned Intensity Uniformity,PIU)。
PIU算法:
1992年,Woods提出了基于划分强度一致的MR-PET图像配准。在医学图像中,同一组织结构在不同的模态下灰度值是不同的。比如骨骼组织在CT图像中灰度值高,在MRI图像中灰度值偏低。
定义:
PIU测度的基本理念是:同一组织在不同模态下的灰度分布具有某种一致性。换句话说,一种模态下的某个灰度值的像素在另一种模态中是以一个不同的灰度值为中心的分布。
PIU测度的表达式定义为:
其中,N为模板中像素总个数,也就是模板行列数的乘积。与
分别表示模板和子图中灰度为r、f的像素个数。
表示搜索图中的某个子图。
表示模板R中灰度值为r的像素在子图
中对应位置上像素灰度值之和。其他式子也是同样的道理。
实例验证:
MATLAB代码:
%//划分强度一致法(Partitioned Intennsity Uniformity, PIU)
%%//-------------------------------------------------------
clear all;
close all;
img=rgb2gray(imread('lena.jpg'));
[img_rows img_clos]=size(img);%//搜索图尺寸
x0=40;y0=30;len=64;
R=img(x0:x0+len-1,y0:y0+len-1);%//取一部分作为模板
figure;imshow(R);title('模板');
[rows clos]=size(R);%//模板尺寸
N=rows*clos;
%%//-------------------------------------------------------
uFr=zeros(256,1);uRf=zeros(256,1);
dFr=zeros(256,1);dRf=zeros(256,1);
a=zeros(256,1);b=zeros(256,1);
piu=zeros(img_rows-len,img_clos-len);
for i=1:img_rows-len
for j=1:5:img_clos-len
S=img(i:i+len-1,j:j+len-1);%//子图
for r=0:255
pos=find(R==r);
nr=size(pos,1)+eps;%//参考图像中灰度值为r的像素个数
value1=S(pos);
uFr(r+1,1)=sum(value1)/nr;%//R中像素为r的位置处,对应S上的像素点均值
t1=double(S(pos))-uFr(r+1,1);
dFr(r+1,1)=sum(t1.^2)/nr;
pos=find(S==r);
nf=size(pos,1)+eps;%//参考图像中灰度值为r的像素个数
value2=R(pos);
uRf(r+1,1)=sum(value2)/nf;
t2=double(R(pos))-uRf(r+1,1);
dRf(r+1,1)=sum(t2.^2)/nf;
a(r+1,1)=(nr*dFr(r+1,1))/(N*uFr(r+1,1)+eps);
b(r+1,1)=(nf*dRf(r+1,1))/(N*uRf(r+1,1)+eps);
end
piu(i,j)=sum(a)+sum(b);
end
end
%%//-------------------------------------------------------
piu_min=min(min(piu));
[y,x]=find(piu==piu_min);
x=x-1;y=y-1;
figure;imshow(img);hold on;
rectangle('position',[x,y,len-1,len-1],'edgecolor','r');
title('搜索结果');hold off;
%over
输出结果:
参考文献:
1、张娟.医学图像配准中相似性测度的研究[M],2014.