本文主要是介绍tamura纹理特征 JAVA_(zz)Tamura纹理特征的matlab实现(一)---粗糙度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
搜了好久也没找到Tamura纹理特征的实现代码,于是自己动手丰衣足食,找出了最原始的Tamura的论文《Textural
Features Corresponding to Visual
Perception》来研读。今天下午实现了粗糙度(coarseness)部分,与大家共享,有错误的地方,还望大家指正。后续的对比度(contrast)、方向度(directionality)、线性度(linelikeness)、规则度(regularity)、粗略度(roughness)会陆续实现并共享。
Tamura纹理特征要比灰度共生矩阵得到的纹理特征更直观,在视觉效果上更有优势,由于比较懒,一直避重就轻,到今天终于要直面问题了,代码如下:
coarseness.m
%graypic为待处理的灰度图片,2^kmax为最大窗口
function Fcrs=coarseness(graypic,kmax)
%获取图片大小
[h,w]=size(graypic);
%平均灰度值矩阵A
A=zeros(h,w,2^kmax);
%计算有效可计算范围内每个点的2^k邻域内的平均灰度值
for i=2^(kmax-1)+1:h-2^(kmax-1)
for j=2^(kmax-1)+1:w-2^(kmax-1)
for k=1:kmax
A(i,j,k)=mean2(graypic(i-2^(k-1):i+2^(k-1)-1,j-2^(k-1):j+2^(k-1)-1));
end
end
end
%对每个像素点,计算在水平和垂直方向上不重叠窗口之间的Ak差
for i=1+2^(kmax-1):h-2^(kmax-1)
for j=1+2^(kmax-1):w-2^(kmax-1)
for k=1:kmax
Eh(i,j,k)=abs(A(i+2^(k-1),j,k)-A(i-2^(k-1),j));
Ev(i,j,k)=abs(A(i,j+2^(k-1),k)-A(i,j-2^(k-1)));
end
end
end
%对每个像素点计算使E达到最大值的k
for i=2^(kmax-1)+1:h-2^(kmax-1)
for j=2^(kmax-1)+1:w-2^(kmax-1)
[maxEh,p]=max(Eh(i,j,:));
[maxEv,q]=max(Ev(i,j,:));
if
maxEh>maxEv
maxkk=p;
else
maxkk=q;
end
Sbest(i,j)=2^maxkk;
%每个像素点的最优窗口大小为2^maxkk
end
end
%所有Sbest的均值作为整幅图片的粗糙度
Fcrs=mean2(Sbest);
调用:
image=rgb2gray(imread('example.jpg'));
f=coarseness(image,5)
Tamura纹理特征的matlab实现(二)---对比度
(2010-01-13 21:40:27)
TE<
转载TE<
var $tag='tamura,纹理特,对比度,it'; var
$tag_code='c57dde215fc1a8b3216796890dd4f569'; var
$r_quote_bligid='59ead5d90100gx4v'; var $worldcup='0'; var
$worldcu
这篇关于tamura纹理特征 JAVA_(zz)Tamura纹理特征的matlab实现(一)---粗糙度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!