フィルターのクリア

Why do i keep getting x=1 when it should be a matrix??

2 ビュー (過去 30 日間)
Nav
Nav 2013 年 5 月 5 日
For some reason when i run this script x always equals one when it's suppose to be a matrix.
The program is for star dectection from the image and x suppose to be the threshold with steps.
stars=imread('stars.jpg');
GREY = rgb2gray(stars);
figure,imshow(GREY);
big = max( max (GREY)); %255
threshold = .4;
bwimage = GREY >= threshold*big;
figure(2),imshow(bwimage);
step=0.01;
for x = [0.0:step:1.0]
BW = GREY > big.*x;
count = sum(BW>=x);
end
Thanks ill greatly appreciate the help

採用された回答

Walter Roberson
Walter Roberson 2013 年 5 月 5 日
"x" is used as a loop control variable. During the loop it will have only one value at a time; after the loop it will be the last value that it was assigned in the loop.
You have a problem that each iteration of the loop, you are overwriting "BW" and "count".
xvals = 0 : step: 1;
numx = length(xvals);
for K = 1 : numx
x = xvals(K);
BW = GREY > big.*x;
count(K) = sum(BW(:));
end

その他の回答 (1 件)

the cyclist
the cyclist 2013 年 5 月 5 日
The way you have coded this, x is in a for loop, and the code will step through values of x, one by one, starting from 0 and ending at 1.
Instead, did you mean to simply make x a vector? Then you just need
x = 0.0 : step : 1.0;
without the loop.

Community Treasure Hunt

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

Start Hunting!

Translated by