☆★☆★☆
边缘区域:
角点区域(好像也不全角点,求角点还是harris好了):
结构张量行列式与迹的关系:
☆★☆★☆
其中红框为平坦区域,黄框为边缘区域,铝框为角点区域。 matlab代码如下:
clear all; close all; clc;
img=double(imread('lena.jpg')); [m n]=size(img); imshow(img,[])
[Ix Iy]=gradient(img); Ix2=Ix.^2; Iy2=Iy.^2; Ixy=Ix.*Iy; k=1;
lambda=zeros(m*n,2); for i=1:m for j=1:n
st=[Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)]; %结构张量 K=det(st); %求行列式 H=trace(st); %求迹 %所有的判断都是近似的
% if H<50 %认为是平坦区域 % if H>50 && abs(K)<0.01*10^(-9) %认为是边缘区域 if H>50 && abs(K)>0.01*10^(-9) %认为是角点区域 img(i,j)=255; end
lambda(k,:)=[K H];
☆★☆★☆
k=k+1; end end
figure;
plot(lambda(:,1),lambda(:,2),'.'); ylabel('trace');xlabel('det');
figure;
imshow(img,[])
6.模糊集图像增强
算法有很多变种。不过主要就是以下三步。
1.设计隶属度函数将图像从空间域变换到模糊集域。 2.设计模糊增强算子,在模糊集域对图像进行处理。
3.根据第1步的隶属度函数重新将图像从模糊集域变换到空间域。 这和频域处理中的变换反变换不是很像么。
我使用的隶属度函数和模糊增强算子在这篇论文里,也算相关算法的经典论文了。 处理结果如下: 原图:
模糊集增强后:
☆★☆★☆
matlab代码如下:
clear all; close all; clc;
img=double(imread('lena.jpg')); imshow(img,[]) [m n]=size(img);
Fe=1; %控制参数 Fd=128;
xmax=max(max(img));
u=(1+(xmax-img)/Fd).^(-Fe); %空间域变换到模糊域
%也可以多次迭代
for i=1:m %模糊域增强算子 for j=1:n
if u(i,j)<0.5
u(i,j)=2*u(i,j)^2; else
u(i,j)=1-2*(1-u(i,j))^2; end end end
img=xmax-Fd.*(u.^(-1/Fe)-1); %模糊域变换回空间域
figure;
imshow(uint8(img));
相关推荐: