显著性区域检测matlab_code_20170412

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.Main_program

%====test1

clear

close all

clc

%img_in,输入的待处理的图像

%n,图像分块的patch的大小

%img_rgb:缩放后的rgb图

%img_lab:rgb2lab后的图

%h,w,图像高宽

%mex_store,存储矩阵

img=imread('test1.jpg');

% img=imread('E:\例程\matlab\显著性分割\假设已知均值\test picture\0010.tif');

max_side=120;

yu_value=0.8;

img_lab = pre_rgb2lab(img,max_side);

[ img_scale_1,img_scale_2,img_scale_3,img_scale_4 ] = get4Scale( img_lab );

[ DistanceValue_scale_1_t1,DistanceValue_scale_1_exp,DistanceValue_scale_1_t1_rang,DistanceValue_scale_1_exp_rang] = distanceValueMap_search_onescale_2( img_scale_1,max_side );

[ DistanceValue_scale_2_t1,DistanceValue_scale_2_exp,DistanceValue_scale_2_t1_rang,DistanceValue_scale_2_exp_rang] = distanceValueMap_search_onescale_2( img_scale_2,max_side );

[ DistanceValue_scale_3_t1,DistanceValue_scale_3_exp,DistanceValue_scale_3_t1_rang,DistanceValue_scale_3_exp_rang] = distanceValueMap_search_onescale_2( img_scale_3,max_side );

[ DistanceValue_scale_4_t1,DistanceValue_scale_4_exp,DistanceValue_scale_4_t1_rang,DistanceValue_scale_4_exp_rang] = distanceValueMap_search_onescale_2( img_scale_4,max_side );

value_C_1=Center_weight( DistanceValue_scale_1_exp_rang,yu_value );

value_C_2=Center_weight( DistanceValue_scale_2_exp_rang,yu_value );

value_C_3=Center_weight( DistanceValue_scale_3_exp_rang,yu_value );

value_C_4=Center_weight( DistanceValue_scale_4_exp_rang,yu_value );

[h,w]=size(value_C_1);

value_C_1_resize=value_C_1;

value_C_2_resize=imresize(value_C_2,[h,w]);

value_C_3_resize=imresize(value_C_3,[h,w]);

value_C_4_resize=imresize(value_C_4,[h,w]);

value_C_sum=(value_C_1_resize+value_C_2_resize+value_C_3_resize+value_C_4_resize)/4;

figure,

imshow(value_C_sum);

figure,

imshow(value_C_1_resize);

figure,

imshow(value_C_2_resize);

figure,

imshow(value_C_3_resize);

figure,

imshow(value_C_4_resize); 8888888888888888888888888888888888888888888888888888888888888888888888888888

2.Center_weight

function [ img_out ] = Center_weight( img_in,yu_value )

%UNTITLED Summary of this function goes here

% Detailed explanation goes here

img_in=mat2gray(img_in);

[h,w]=size(img_in);

[row,col]=find(img_in>yu_value);%找到所有大于阈值的点,记录坐标

l=length(row);

a(1,:)=row;

a(2,:)=col;

for i0=1:h

for j0=1:w

for i=1:l

c_store(i)=norm(a(:,i)-[i0;j0]);

end

min_c(i0,j0)=min(c_store);

end

end

min_c_rang=mat2gray(min_c);

img_out=img_in.*(1-min_c_rang);

end 888888888888888888888888888888888888888888888888888888888888888888888888888888888888

3.distanceValueMap_search_onescale

function [ DistanceValue_t1,DistanceValue_exp,DistanceValue_t1_rang,DistanceValue_exp_rang] = distanceValueMap_search_onescale( img_in,max_side )

%UNTITLED7 Summary of this function goes here

% Detailed explanation goes here

[h,w]=size(img_in(:,:,1));

img_scale1=img_in;

%================================================================================ %在计算块之前,考虑边缘点,所以先对矩阵进行填充

q=3;%填充边缘像素个数

img_scale1_pad(:,:,1)=padarray(img_scale1(:,:,1),[q,q],'replicate','both');

img_scale1_pad(:,:,2)=padarray(img_scale1(:,:,2),[q,q],'replicate','both');

img_scale1_pad(:,:,3)=padarray(img_scale1(:,:,3),[q,q],'replicate','both');

%----------------------------------------------------------------------------------

%计算该尺度下存储patch相量的矩阵,各三个像素取一个patch

for i=1:h

for j=1:w

img_scale1_patchVstore_all(i,j,:)=reshape(img_scale1_pad(i:i+6,j:j+6,:),1,147);

end

end

img_scale1_patchVstore_x=img_scale1_patchVstore_all(1:q:h,1:q:w,:);%将代表patch的相量存为一个矩阵

disp('img_scale1_patchVstore_x complete');

%-----------------------------------------------------------------------------------------

%开始计算每一点的距离的值

[h_x,w_x]=size(img_scale1_patchVstore_x(:,:,1));%记录存储矩阵的大小

for i0=1:h

disp(num2str(i0));

for j0=1:w

temp1=img_scale1_patchVstore_all(i0,j0,:);

store_tp1_all=reshape(img_scale1_patchVstore_all(i0,j0,:),1,147);

for i=1:h_x

for j=1:w_x

相关文档
最新文档