Azzera filtri
Azzera filtri

How to solve the error "Undefined function 'pointCloud' for input arguments of type 'double'."

5 visualizzazioni (ultimi 30 giorni)
Hello everyone, I am trying to run this code, but when it goes to the line 6. It will give me the error "Undefined function 'pointCloud' for input arguments of type 'double'." I would great appreciate if anybody can help me out in the aspect of solving this error. Thank you in advance!
clear;close all;clc
obj = VideoReader('twocolors12.avi'); %%%good frames from 3295---3484
get(obj)
NOF=500;
SE = strel('arbitrary',ones(2,2));
mm=pointCloud([0,0,0]);
for i=60:80;
he=read(obj,i);
kl=he(:,:,3);
[X_no_dither,map]= rgb2ind(he,8,'nodither');
%figure, imshow(X_no_dither,map);
%imshow(kl)
cform = makecform('srgb2lab');
lab_he = applycform(he,cform);
ab = double(lab_he(:,:,2:3));
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,2);
nColors = 5;
[cluster_idx, cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ...
'Replicates',3);
pixel_labels = reshape(cluster_idx,nrows,ncols);
mean_cluster_value = mean(cluster_center,3);
[tmp, idx] = sort(mean_cluster_value);
blue_cluster_num = idx(5);
L = lab_he(:,:,2);
%imshow(L)
blue_idx = find(pixel_labels == blue_cluster_num);
L_blue = L(blue_idx);
is_light_blue = im2bw(L_blue,graythresh(L_blue));
nuclei_labels = repmat(uint8(0),[nrows ncols]);
nuclei_labels(blue_idx(is_light_blue==false)) = 1;
nuclei_labels = repmat(nuclei_labels,[1 1 3]);
blue_nuclei = he;
blue_nuclei(nuclei_labels ~= 1) = 0;
%imshow(blue_nuclei), title('blue nuclei');
f=blue_nuclei(:,:,1);
%imshow(f)
f12=(f/5).^2*2;
%imshow(f12)
f123=imdilate(f12,SE,'same');
%imshow(f123)
%[r,t]=edge(f12,'canny',0.9,'vertical');
%imshow(r)
fb=im2bw((f123),0.01);
%imshow(fb)
f123=imdilate(fb,SE,'same');
%imshow(f123)
[r,t]=edge(f123,'canny',0.9,'vertical');
%imshow(r)
fn=imclose(r,ones(25,25));
%imshow(fn)
BW2 = bwmorph(fn,'thin',inf);
fn=imclose(BW2,ones(10,15));
BW2=imdilate(fn,SE,'same');
%BW2=bwmorph(BW2,'spur',1);
%imshow(BW2)
%...........................rotate..............................
image=BW2;
%image padding
[Rows, Cols] = size(image);
Diagonal = sqrt(Rows^2 + Cols^2);
RowPad = ceil(Diagonal - Rows) + 2;
ColPad = ceil(Diagonal - Cols) + 2;
imagepad = zeros(Rows+RowPad, Cols+ColPad);
imagepad(ceil(RowPad/2):(ceil(RowPad/2)+Rows-1),ceil(ColPad/2):(ceil(ColPad/2)+Cols-1)) = image;
degree=-10;
%midpoints
midx=ceil((size(imagepad,1)+1)/2);
midy=ceil((size(imagepad,2)+1)/2);
imagerot=zeros(size(imagepad));
%rotation
for ii=1:size(imagepad,1)
for j=1:size(imagepad,2)
x=(ii-midx)*cos(degree)-(j-midy)*sin(degree);
y=(ii-midx)*sin(degree)+(j-midy)*cos(degree);
x=round(x)+midx;
y=round(y)+midy;
if (x>=1 && y>=1)
imagerot(x,y)=imagepad(ii,j); % k degrees rotated image
end
end
end
%figure
BW2=imagerot;
fn=imdilate(BW2,SE,'same');
fn=imclose(fn,ones(4,15));
BW2=bwmorph(fn,'spur',3);
ghy=BW2;
%imshow(BW2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%.................Horizantel pixels............
fn1=BW2;
[RR CC]=size(fn1);
yy1(RR,CC)=0;
d1(RR)=0;
for o=1:RR
yyy=find(fn1(o,:)==1);
[nn ll1]=size(yyy);
if ll1<=4
d1(o)=0;
else
ss1=yyy(1);
re=0;
for ib=1:ll1
yy1(o,ib)=yyy(1,ib);
if ss1==yy1(o,ib);
re=re+1;
ss1=ss1+1;
end
end
re1=ll1-re;
vv1=yyy(re);
if re==ll1
vv2=0;
else
re2=(ll1-re1)+1;
vv2=yyy(re2);
end
d1(o)=vv2-vv1;
end
end
bbb1=find(d1==max(d1));
Hp(i)=ceil(mean(bbb1));
simemajor(i)=ceil(max(d1)/2)+1;
%BW2(Hp-1:Hp+1,:)=1;
%imshow(BW2)
%...............end................
%........... virtical...................
fn21=BW2;
%imshow(fn21)
yy11(RR,CC)=0;
d11(CC)=0;
for oo=1:CC
yyy1=find(fn21(:,oo)==1)';
[nn ll11]=size(yyy1);
if ll11<=4
d11(oo)=0;
else
ss11=yyy1(1);
ree=0;
for iii=1:ll11
yy11(oo,iii)=yyy1(1,iii);
if ss11==yy11(oo,iii);
ree=ree+1;
ss11=ss11+1;
end
end
ree1=ll11-ree;
vv11=yyy1(ree);
if ree==ll11
vv21=0;
else
ree2=(ll11-ree1)+1;
vv21=yyy1(ree2);
end
d11(oo)=vv21-vv11;
end
end
bbb11=find(d11==max(d11));
vp(i)=ceil(mean(bbb11));
simeminor(i)=ceil(max(d11)/2)+1;
if simemajor(i)> simeminor(i)
fff=sqrt((simemajor(i))^2-(simeminor(i))^2);
ecentracity(i)=fff/simemajor(i);
else
fff=sqrt((-simemajor(i))^2+(simeminor(i))^2);
ecentracity(i)=fff/simeminor(i);
end
%.............end...................
%........... ploting the image withe the center.......
BW2(Hp(i)-1:Hp(i)+1,:)=1;
BW2(:,vp(i)-2:vp(i)+2)=1;
%imshow(BW2)
nnn=(Hp(i)-(RR/2)-1);
nnn1=(vp(i)-(CC/2)-1);
%...................End................................
%.................recenter the image..................
BB1(1:RR,1:CC)=0;
ee=max(max(yy11));
for o=1:ee
yyy=find(fn1(o,:)==1);
[nn nm]=size(yyy);
if nm==0
BB1(o,:)=0;
else
[nn nm]=size(yyy);
BB1(abs(ceil(o-nnn)),abs(ceil(yyy(1:nm)-nnn1)))=1;
end
end
[rr,c]=find(ghy);
zzzz=((2.2346*i)*ones(1,length(rr)));
xx=[rr,0.1141*c,zzzz'];
f=pointCloud(xx);
mm=pcmerge(mm,f,0.5);
i
end
% showPointCloud(mm)
% zlabel('The distance(mm)')
% vbn=ecentracity;
%
kh=zeros(1,357);
lo=60;
cv=1;
for lk=134:179
kh(lk)=ecentracity(lo);
if cv<=3
lo=lo;
else
lo=lo+1;
cv=1;
end
cv=cv+1;
end
%hju=ecentracity(89:160);
plot(kh)
axis([134 179 0 0.6])
xlabel('The distance(mm)')
ylabel('The eccentricity ')
% plot(bigradus(:179))
% figure
% imshow(BB1)
% Hp
% vp
% smallraduse
% bigradus
% ecentracity

Risposte (1)

Walter Roberson
Walter Roberson il 3 Lug 2016
The pointCloud class was added in R2015a. Your posting in a different Question suggests that you are using R2014b.
  3 Commenti
Steven Lord
Steven Lord il 3 Lug 2016
If you want to use pointCloud, you must be using release R2015a or later (and have Computer Vision System Toolbox installed and licensed.)
Release R2014b is before release R2015a.
forest tracker
forest tracker il 3 Lug 2016
Thanks for your great help. I am working on getting a new version of Matlab of current year.

Accedi per commentare.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by