Error using isrgb (line 7) Function ISRGB has been removed. Error in demoASIFT1 (line 4) if isrgb(img1)
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
vani shree
el 23 de Abr. de 2017
Respondida: m madia
el 15 de Dic. de 2020
sir i m doing ASIFT coding which i have download from matlab exchange file. when i run this code i m getting error
"Error using isrgb (line 7) Function ISRGB has been removed.
Error in demoASIFT1 (line 4) if isrgb(img1)" please help me sir. i m doing project using ASIFT i have attached coding here. help me
% assumption, that we have img1 and img2.
if isrgb(img1)
img1gr = rgb2gray( img1 );
else
img1gr = img1;
end
if isrgb(img2)
img2gr = rgb2gray( img2 );
else
img2gr = img2;
end[ m1, n1 ] = size( img1gr ); [ m2, n2 ] = size( img2gr );
%-------------------- Parameters -------------------% SwitchWaitbars = 'off'; % 'off'/'on' %--------------- Descriptors 4 FP ------------------% TypeOfFP = 'Aff'; % 'Aff'/'HL' TypeOfDescriptor = 'SIFT'; % there is possibility to add diferent type of descr., however I've implemented only SIFT. NOfWindows = 4; % near each FP will be taken NOfWindows^2 of windows of size 4x4 AngleBinDescript = 45; % degrees ThreshDescript = 0.2; FactorDescript = 1.5; StepSampleFunction = @(x) sqrt(1+x^2); %-------------------- 'ASIFT' ----------------------% TiltVectorRange = sqrt(2).^([ 0 1 2 3 4 ]); % also can be taken (0, 3 - 5) StepAngleFunction = @(x) 72/x; % 72/x TypeOfViewSimulation = 'both'; % 'first'/'second'/'both' % which image views need to simulate BlureTilt = 'no'; % 'yes'/'no' BlureSigmaFunction = @(x) sqrt( x^2 - 1 ); % depends on tilt value
%--------------------- Harris ----------------------% TypeOfCornerDetector = 'HarmonicMean'; % 'Harris'/'HarmonicMean' TypeOfNBHOOD = 'const'; % 'const'/'dif'. 'dif' - depends on scale NBHOOD = ones(3); % scalar or binar matrix, specifying neighberhood BorderDistance = 3*NOfWindows; ThreshType = 'const'; % 'const'/'percent' HarrisThresh = 10; % in case of 'HarmonicMean', thresh ~ 10, Harris ~ 1000 k = 0.055; % parameter for Harris function Dilate = 'no'; % 'yes'/'no' radius = 2; sigma_nmbr = 3; dispMatches = 0; % 0/1
%--------------- Main Orientation -----------------% ThreshMainOrient = 0.8; FactorMainOrient = 1.5; AngleBinMainOrient = 10; TypeOfMainOrient = 'some'; % 'one'/'some'. 'one' - for each FP take only one Main Orientation % ( take it, if this orient. is the only one bigger then ThreshMainOrient % of it's value ) % 'some' - take all orientations, that bigger then thresh, described above.
%----------------- Matching FPs -------------------% TypeOfSearch = 'determ'; %'determ' 1/2, 'kmeans','kNN', 'ANN', for not big data preferable 'determ' 2, % 'kmeans' - just for experiment. HelpScalarOrVector = 2; TypeOfMatchThresh = 'first/second&first'; % 'first' / 'first/second' / 'first/second&first' ThreshFS = 0.78; % thresh for first/second ( 0.5 - ~0.8 ) % need to worry that, if there is a big difference in viewpoints between % images, then take ~0.55 - 0.61, else can be taken ~0.75 - 0.8 ThreshF = 0.5; % thresh for first ( 0.33 - 0.55 )
%--------------------------------------------------------------------%
%----------- Simulating views for ASIFT --------------%
if strcmp( TypeOfViewSimulation, 'first' ) || strcmp( TypeOfViewSimulation, 'both' )
cnt1 = 1;
DescriptHrLPoints1 = {};
HrLOrntPoints1 = {};
img1Orig = img1gr;
for t = TiltVectorRange
DeltaPhi = StepAngleFunction( t );
for phi = 0:DeltaPhi:(180-eps)
phiAngle = deg2rad( phi );
% defining tilt and longitude affin simulation matrix
T = zeros( 3 );
T(3,3)=1;
Tilt = eye(2);
Tilt(1) = t;
R = [ cos(phiAngle) -sin(phiAngle); sin(phiAngle) cos(phiAngle) ];
Aff = Tilt*R;
T( 1:2, 1:2 ) = Aff';
Tf = maketform('affine',T); % affine transformation for view-simulation if strcmp(BlureTilt, 'yes')
sigma = BlureSigmaFunction( t );
if sigma > 0
g = fspecial( 'gaussian', [ 1, round( 6*sigma ) + 1 ], sigma );
img1gr = imfilter( img1Orig, g, 'same' );
else
img1gr = img1Orig;
end
else
img1gr = img1Orig;
end
BorderDistanceMatrix = zeros( m1, n1 );
BorderDistanceMatrix( (BorderDistance + 1):(m1 - BorderDistance), (BorderDistance + 1):(n1 - BorderDistance) ) = 1;
[ imgSimulated, xdata, ydata ] = imtransform( img1gr, Tf );
BorderDistanceMatrix = imtransform( BorderDistanceMatrix, Tf, 'xdata', xdata, 'ydata', ydata );
%- Finding FP and they char. scale (Harris-Laplace) -%
[ HrLPointsTmp1 ] = harrislpls( imgSimulated, TypeOfNBHOOD, NBHOOD, TypeOfCornerDetector, BorderDistanceMatrix, ThreshType, HarrisThresh, k, Dilate, radius, sigma_nmbr, disp, SwitchWaitbars );%----------- Finding Main Orientation -------------%
[ HrLOrntPointsTmp1 ] = mainOrient( HrLPointsTmp1, imgSimulated, ThreshMainOrient, FactorMainOrient, AngleBinMainOrient, TypeOfMainOrient, SwitchWaitbars );
%------------------ Descripting -------------------%
[ DescriptHrLPointsTmp1 ] = descriptFPoints( HrLOrntPointsTmp1, imgSimulated, TypeOfDescriptor, NOfWindows, StepSampleFunction, AngleBinDescript, ThreshDescript, FactorDescript, SwitchWaitbars );
%----- Converting FP coordinates to original ------%
% back to coordinates, before shift for image coord. ( xdata(1) -> 1, ydata(1) -> 1 )
HrLOrntPointsTmp1( :, [ 2 5 ] ) = HrLOrntPointsTmp1( :, [ 2 5 ] ) - 1 + xdata(1);
HrLOrntPointsTmp1( :, [ 1 4 ] ) = HrLOrntPointsTmp1( :, [ 1 4 ] ) - 1 + ydata(1);
% back to original image coordinates
tmp = tforminv( Tf, HrLOrntPointsTmp1( :, 5 ), HrLOrntPointsTmp1( :, 4 ));
HrLOrntPointsTmp1( :, 2 ) = round(tmp(:,1)); HrLOrntPointsTmp1( :, 1 ) = round(tmp(:,2));
HrLOrntPointsTmp1( :, 1 ) = max( HrLOrntPointsTmp1( :, 1 ), 1 ); HrLOrntPointsTmp1( :, 1 ) = min( HrLOrntPointsTmp1( :, 1 ), m1 );
HrLOrntPointsTmp1( :, 2 ) = max( HrLOrntPointsTmp1( :, 2 ), 1 ); HrLOrntPointsTmp1( :, 2 ) = min( HrLOrntPointsTmp1( :, 2 ), n1 );
HrLOrntPointsTmp1( :, 5 ) = tmp(:,1); HrLOrntPointsTmp1( :, 4 ) = tmp(:,2);
% adding FP to all FP, that were founded before
DescriptHrLPoints1{cnt1} = DescriptHrLPointsTmp1;
HrLOrntPoints1{cnt1} = HrLOrntPointsTmp1;
cnt1 = cnt1 + 1;
end
end
else
[ HrLPoints1 ] = harrislpls( img1gr, TypeOfNBHOOD, NBHOOD, TypeOfCornerDetector, BorderDistance, ThreshType, HarrisThresh, k, Dilate, radius, sigma_nmbr, disp, SwitchWaitbars );
%----------- Finding Main Orientation -------------% [ HrLOrntPoints1 ] = mainOrient( HrLPoints1, img1gr, ThreshMainOrient, FactorMainOrient, AngleBinMainOrient, TypeOfMainOrient, SwitchWaitbars );
%------------------ Descripting -------------------% [ DescriptHrLPoints1 ] = descriptFPoints( HrLOrntPoints1, img1gr, TypeOfDescriptor, NOfWindows, StepSampleFunction, AngleBinDescript, ThreshDescript, FactorDescript, SwitchWaitbars ); end
% save('test.mat');
if strcmp( TypeOfViewSimulation, 'second' ) || strcmp( TypeOfViewSimulation, 'both' )
cnt2 = 1;
DescriptHrLPoints2 = {};
HrLOrntPoints2 = {};
img2Orig = img2gr;
for t = TiltVectorRange
DeltaPhi = StepAngleFunction( t );
for phi = 0:DeltaPhi:(180-eps)
phiAngle = deg2rad( phi );
% defining tilt and longitude affin simulation matrix
T = zeros( 3 );
T(3,3)=1;
Tilt = eye(2);
Tilt(1) = t;
R = [ cos(phiAngle) -sin(phiAngle); sin(phiAngle) cos(phiAngle) ];
Aff = Tilt*R;
T( 1:2, 1:2 ) = Aff';
Tf = maketform('affine',T); % affine transformation for view-simulation if strcmp(BlureTilt, 'yes')
sigma = BlureSigmaFunction( t );
if sigma > 0
g = fspecial( 'gaussian', [ 1, round( 6*sigma ) + 1 ], sigma );
img2gr = imfilter( img2Orig, g, 'same' );
else
img2gr = img2Orig;
end
else
img2gr = img2Orig;
end
BorderDistanceMatrix = zeros( m2, n2 );
BorderDistanceMatrix( (BorderDistance + 1):(m2 - BorderDistance), (BorderDistance + 1):(n2 - BorderDistance) ) = 1;
[ imgSimulated, xdata, ydata ] = imtransform( img2gr, Tf );
BorderDistanceMatrix = imtransform( BorderDistanceMatrix, Tf, 'xdata', xdata, 'ydata', ydata );
%- Finding FP and they char. scale (Harris-Laplace) -%
[ HrLPointsTmp2 ] = harrislpls( imgSimulated, TypeOfNBHOOD, NBHOOD, TypeOfCornerDetector, BorderDistanceMatrix, ThreshType, HarrisThresh, k, Dilate, radius, sigma_nmbr, disp, SwitchWaitbars );%----------- Finding Main Orientation -------------%
[ HrLOrntPointsTmp2 ] = mainOrient( HrLPointsTmp2, imgSimulated, ThreshMainOrient, FactorMainOrient, AngleBinMainOrient, TypeOfMainOrient, SwitchWaitbars );
%------------------ Descripting -------------------%
[ DescriptHrLPointsTmp2 ] = descriptFPoints( HrLOrntPointsTmp2, imgSimulated, TypeOfDescriptor, NOfWindows, StepSampleFunction, AngleBinDescript, ThreshDescript, FactorDescript, SwitchWaitbars );
%----- Converting FP coordinates to original ------%
% back to coordinates, before shift for image coord. ( xdata(1) -> 1, ydata(1) -> 1 )
HrLOrntPointsTmp2( :, [ 2 5 ] ) = HrLOrntPointsTmp2( :, [ 2 5 ] ) - 1 + xdata(1);
HrLOrntPointsTmp2( :, [ 1 4 ] ) = HrLOrntPointsTmp2( :, [ 1 4 ] ) - 1 + ydata(1);
% back to original image coordinates
tmp = tforminv( Tf, HrLOrntPointsTmp2( :, 5 ), HrLOrntPointsTmp2( :, 4 ));
HrLOrntPointsTmp2( :, 2 ) = round(tmp(:,1)); HrLOrntPointsTmp2( :, 1 ) = round(tmp(:,2));
HrLOrntPointsTmp2( :, 1 ) = max( HrLOrntPointsTmp2( :, 1 ), 1 ); HrLOrntPointsTmp2( :, 1 ) = min( HrLOrntPointsTmp2( :, 1 ), m2 );
HrLOrntPointsTmp2( :, 2 ) = max( HrLOrntPointsTmp2( :, 2 ), 1 ); HrLOrntPointsTmp2( :, 2 ) = min( HrLOrntPointsTmp2( :, 2 ), n2 );
HrLOrntPointsTmp2( :, 5 ) = tmp(:,1); HrLOrntPointsTmp2( :, 4 ) = tmp(:,2);
% adding FP to all FP, that were founded before
DescriptHrLPoints2{cnt2} = DescriptHrLPointsTmp2;
HrLOrntPoints2{cnt2} = HrLOrntPointsTmp2;
cnt2 = cnt2 + 1;
end
end
else
[ HrLPoints2 ] = harrislpls( img2gr, TypeOfNBHOOD, NBHOOD, TypeOfCornerDetector, BorderDistance, ThreshType, HarrisThresh, k, Dilate, radius, sigma_nmbr, disp, SwitchWaitbars );
%----------- Finding Main Orientation -------------% [ HrLOrntPoints2 ] = mainOrient( HrLPoints2, img2gr, ThreshMainOrient, FactorMainOrient, AngleBinMainOrient, TypeOfMainOrient, SwitchWaitbars );
%------------------ Descripting -------------------% [ DescriptHrLPoints2 ] = descriptFPoints( HrLOrntPoints2, img2gr, TypeOfDescriptor, NOfWindows, StepSampleFunction, AngleBinDescript, ThreshDescript, FactorDescript, SwitchWaitbars ); end
% save('test.mat');
switch TypeOfViewSimulation
case 'first'
Match1 = []; Match2 = [];
for i = 1:(cnt1-1)
switch TypeOfMatchThresh
case 'first'
Thresh = ThreshF;
[ MatchedPairs ] = matchFPoints( DescriptHrLPoints1{i}, DescriptHrLPoints2, TypeOfSearch, HelpScalarOrVector, TypeOfMatchThresh, Thresh, SwitchWaitbars );
ind = find( MatchedPairs );
Match1Tmp = HrLOrntPoints1{i}( ind, [ 1 2 3 end ] );
ind = MatchedPairs( ind );
Match2Tmp = HrLOrntPoints2( ind, [ 1 2 3 end ] );
case 'first/second'
Thresh = ThreshFS;
[ MatchedPairs ] = matchFPoints( DescriptHrLPoints1{i}, DescriptHrLPoints2, TypeOfSearch, HelpScalarOrVector, TypeOfMatchThresh, Thresh, SwitchWaitbars );
ind = find( MatchedPairs );
Match1Tmp = HrLOrntPoints1{i}( ind, [ 1 2 3 end ] );
ind = MatchedPairs( ind );
Match2Tmp = HrLOrntPoints2( ind, [ 1 2 3 end ] );
case 'first/second&first'
Thresh = ThreshFS;
[ MatchedPairs ] = matchFPoints( DescriptHrLPoints1{i}, DescriptHrLPoints2, TypeOfSearch, HelpScalarOrVector, 'first/second', Thresh, SwitchWaitbars );
ind1 = find( MatchedPairs );
ind2 = MatchedPairs( ind1 );
% take only those pairs, that are at distance each from other less then ThreshF
ind = find( sqrt(sum( ((DescriptHrLPoints1{i}( ind1, : ) - DescriptHrLPoints2( ind2, : )).^2), 2 )) <= ThreshF );
ind1 = ind1( ind );
ind2 = ind2( ind );
Match1Tmp = HrLOrntPoints1{i}( ind1, [ 1 2 3 end ] );
Match2Tmp = HrLOrntPoints2( ind2, [ 1 2 3 end ] );
end
Match1 = [ Match1; Match1Tmp ]; Match2 = [ Match2; Match2Tmp ];
end
case 'second'
Match1 = []; Match2 = [];
for i = 1:(cnt2-1)
switch TypeOfMatchThresh
case 'first'
Thresh = ThreshF;
[ MatchedPairs ] = matchFPoints( DescriptHrLPoints1, DescriptHrLPoints2{i}, TypeOfSearch, HelpScalarOrVector, TypeOfMatchThresh, Thresh, SwitchWaitbars );
ind = find( MatchedPairs );
Match1Tmp = HrLOrntPoints1( ind, [ 1 2 3 end ] );
ind = MatchedPairs( ind );
Match2Tmp = HrLOrntPoints2{i}( ind, [ 1 2 3 end ] );
case 'first/second'
Thresh = ThreshFS;
[ MatchedPairs ] = matchFPoints( DescriptHrLPoints1, DescriptHrLPoints2{i}, TypeOfSearch, HelpScalarOrVector, TypeOfMatchThresh, Thresh, SwitchWaitbars );
ind = find( MatchedPairs );
Match1Tmp = HrLOrntPoints1( ind, [ 1 2 3 end ] );
ind = MatchedPairs( ind );
Match2Tmp = HrLOrntPoints2{i}( ind, [ 1 2 3 end ] );
case 'first/second&first'
Thresh = ThreshFS;
[ MatchedPairs ] = matchFPoints( DescriptHrLPoints1, DescriptHrLPoints2{i}, TypeOfSearch, HelpScalarOrVector, 'first/second', Thresh, SwitchWaitbars );
ind1 = find( MatchedPairs );
ind2 = MatchedPairs( ind1 );
% take only those pairs, that are at distance each from other less then ThreshF
ind = find( sqrt(sum( ((DescriptHrLPoints1( ind1, : ) - DescriptHrLPoints2{i}( ind2, : )).^2), 2 )) <= ThreshF );
ind1 = ind1( ind );
ind2 = ind2( ind );
Match1Tmp = HrLOrntPoints1( ind1, [ 1 2 3 end ] );
Match2Tmp = HrLOrntPoints2{i}( ind2, [ 1 2 3 end ] );
end
Match1 = [ Match1; Match1Tmp ]; Match2 = [ Match2; Match2Tmp ];
end
case 'both'
Match1 = []; Match2 = [];
for i = 1:(cnt1 - 1)
for j = 1:(cnt2 -1)
switch TypeOfMatchThresh
case 'first'
Thresh = ThreshF;
[ MatchedPairs ] = matchFPoints( DescriptHrLPoints1{i}, DescriptHrLPoints2{j}, TypeOfSearch, HelpScalarOrVector, TypeOfMatchThresh, Thresh, SwitchWaitbars );
ind = find( MatchedPairs );
Match1Tmp = HrLOrntPoints1{i}( ind, [ 1 2 3 end ] );
ind = MatchedPairs( ind );
Match2Tmp = HrLOrntPoints2{j}( ind, [ 1 2 3 end ] );
case 'first/second'
Thresh = ThreshFS;
[ MatchedPairs ] = matchFPoints( DescriptHrLPoints1{i}, DescriptHrLPoints2{j}, TypeOfSearch, HelpScalarOrVector, TypeOfMatchThresh, Thresh, SwitchWaitbars );
ind = find( MatchedPairs );
Match1Tmp = HrLOrntPoints1{i}( ind, [ 1 2 3 end ] );
ind = MatchedPairs( ind );
Match2Tmp = HrLOrntPoints2{j}( ind, [ 1 2 3 end ] );
case 'first/second&first'
Thresh = ThreshFS;
[ MatchedPairs ] = matchFPoints( DescriptHrLPoints1{i}, DescriptHrLPoints2{j}, TypeOfSearch, HelpScalarOrVector, 'first/second', Thresh, SwitchWaitbars );
ind1 = find( MatchedPairs );
ind2 = MatchedPairs( ind1 );
% take only those pairs, that are at distance each from other less then ThreshF
ind = find( sqrt(sum( ((DescriptHrLPoints1{i}( ind1, : ) - DescriptHrLPoints2{j}( ind2, : )).^2), 2 )) <= ThreshF );
ind1 = ind1( ind );
ind2 = ind2( ind );
Match1Tmp = HrLOrntPoints1{i}( ind1, [ 1 2 3 end ] );
Match2Tmp = HrLOrntPoints2{j}( ind2, [ 1 2 3 end ] );
end
Match1 = [ Match1; Match1Tmp ]; Match2 = [ Match2; Match2Tmp ];
% PlotMatches( img1, Match1Tmp, img2, Match2Tmp, 'sigma', TypeOfFP );
end
end
end
%--------------------- Ploting --------------------% PlotMatches( img1, Match1, img2, Match2, 'sigma', TypeOfFP ); end
0 comentarios
Respuesta aceptada
Image Analyst
el 23 de Abr. de 2017
The function isrgb() has been removed starting with R2011b. Replace this line
if isrgb(img1)
with this line
if ndims(img1) == 3
or
[rows, columns, numberOfColorChannels] = size(img1);
if numberOfColorChannels == 3
Más respuestas (1)
Ver también
Categorías
Más información sobre Deep Learning Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!