Why this code shows error.?

조회 수: 2 (최근 30일)
Lalit Patil
Lalit Patil 2012년 12월 5일
This is the image which i am testing.. And code for it is..
I = imread('9.png');
threshold = graythresh(I);
originalImage = im2bw(I, threshold);
i = bwareaopen(originalImage,350);
imshow(i)
m = max(max(i));
[r c] = find(i == m);
fid = fopen('lalit1.txt','wt');
for j=1:length(r)
fprintf(fid,'%f %f\n',r(j),c(j));
end
fclose(fid);
data = textread('lalit1.txt');
r = unique(data);
for i=r',
c = data(data(:,2)==i,1);
z(i,1) = mean([min(c) max(c)]);
end
fid = fopen('lalit2.txt','wt');
for j=1:length(z)
fprintf(fid,'%f %f\n',j,z(j));
end
fclose(fid);
clc;
clear;
fileID = fopen('lalit2.txt');
C = textscan(fileID, '%f32 %f32');
fclose(fileID);
y=cell2mat(C(:,1));
x=cell2mat(C(:,2));
nz = x ~= 0;
y = y(nz);
x = x(nz);
binaryImage = logical(accumarray( ceil([x(:), y(:)]), 1, [480 752]) );
imshow(binaryImage)
Why this program shows error for this attached image.?
Please give me correction..
  댓글 수: 7
Jan
Jan 2012년 12월 5일
I asked you repeatedly to format code in your questions properly. You did this successfully already, but stop this unfortunately again.
  • One empty line before the code
  • one empty line after the code
  • marker the code
  • hit "{} Code" button
It is not hard, but friendly for the readers.
Lalit Patil
Lalit Patil 2012년 12월 6일
size(data)
ans = 19986 2
...............
>> size(c)
ans = 0 1
...............
>> size(i)
ans = 1 1

댓글을 달려면 로그인하십시오.

답변 (2개)

Image Analyst
Image Analyst 2012년 12월 5일
What do you think this code does on a binary image (badly named "i"):
m = max(max(i));
[r c] = find(i == m);
Yep, m is one, so it's the same as
[r c] = find(i);
Then you write all pixel locations to a file for some unknown reason. Then you read it all back in with this
data = textread('lalit1.txt');
r = unique(data);
but now r has unique values from all the rows and columns combined, which makes little sense. Then it continues to get crazier from then on. What are you trying to do? Whatever it is, I'm sure this is not the best way of doing it. I don't really understand what the for,c,z loop is supposed to do and why you're messing around with cell arrays, accumarray(), etc. Perhaps it's due to the lack of comments. But anyway, I'm sure there is a much easier way, if I just knew what you were trying to accomplish. Posting an image would help.
  댓글 수: 1
Lalit Patil
Lalit Patil 2012년 12월 6일
I have This original image
.......................
And after running my above code i got this kind of image Whuch i want..
.........................
The same thing i want to do for this image,
But this code shows this kind of error,
??? Subscripted assignment dimension mismatch.

댓글을 달려면 로그인하십시오.


Walter Roberson
Walter Roberson 2012년 12월 6일
Nothing matches the equality test, so "c" becomes empty. The min and max of that are empty, the mean of emptiness is empty, and you then try to store that emptiness in a single array location. But a single array location is too big to store emptiness so you get the error.

Community Treasure Hunt

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

Start Hunting!

Translated by