Exclude point from my regression
Info
Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.
Ältere Kommentare anzeigen
Hi I'm doing regression with this code
I=imread('Immage.bmp')
%find the min and max
minimo= min(I(:))
massimo=max(I(:))
[r, c] = find(I>=224 & I<=225)
coefficients = polyfit(r, c, 1);
%xFit = x; % Option 1 : same number of points as the training set.
xFit = linspace(min(r), max(r), 2000); % Option 2 : lots of points, and not just where the training points are.
yFit = polyval(coefficients, xFit);
imshow(I)
hold on
plot(r, c, 'r*', 'LineWidth', 2, 'Markersize', 6)
hold on;
plot(xFit, yFit, 'm-', 'LineWidth', 5)
hold on;
line([1,2448],[1024,1024]);
'r' and 'c' are two vector thaht rappresent the coordinates (X,Y) of the pixel. I want to remove the pixel where the intensity is lower than a parameter. How can i do that?
2 Kommentare
KSSV
am 5 Nov. 2020
You cannot remove that pixle.......but you can replace that with some other value.
valerio auricchio
am 5 Nov. 2020
Antworten (1)
Let I be your m*n image.
[m,n] = size(I) ;
[X,Y] = meshgrid(1:n,1:m) ;
[r, c] = find(I>=224 & I<=225) ;
% Get the pixel values at r, c
p = interp2(X,Y,I,r,c) ; % if it throws error comvert I into double
% Let pi be pixel values you want to remove
idx = p == pi ; % idx = abs(p-pi)<=10^-3
r(idx) = []; c(idx) =[] ; % remove those points which have pi pixel
13 Kommentare
valerio auricchio
am 5 Nov. 2020
[m,n] = size(I) ;
[X,Y] = meshgrid(1:n,1:m) ;
[r, c] = find(I>=224 & I<=225) ;
% Get the pixel values at r, c
p = interp2(X,Y,I,r,c) ; % if it throws error comvert I into double
% Let a be pixel values you want to remove
idx = p < a ;
r(idx) = []; c(idx) =[] ; % remove those points which have pi pixel
valerio auricchio
am 5 Nov. 2020
KSSV
am 5 Nov. 2020
It should be interp2. My typo error. Now I have edited the answer. Also you can pick your required pixlels using find.
valerio auricchio
am 5 Nov. 2020
Bearbeitet: valerio auricchio
am 5 Nov. 2020
KSSV
am 5 Nov. 2020
Attach your image.
valerio auricchio
am 5 Nov. 2020
valerio auricchio
am 5 Nov. 2020
KSSV
am 6 Nov. 2020
[r, c] = find(I>=224 & I<=225) ;
If you see (r,c) they are empty. There is no value in I which is greater than 211.
For demo purpose, you can check the below code:
I=imread('Image.bmp') ;
ID=double(I);
[m,n] = size(I) ;
[X,Y] = meshgrid(1:n,1:m) ;
[r, c] = find(I>=150 & I<=180) ;
% Get the pixel values at r, c
p = interp2(X,Y,ID,r,c) ; % if it throws error comvert I into double
% Let a be pixel values you want to remove
a = 170 ;
idx = p < a ;
r(idx) = []; c(idx) =[] ;
valerio auricchio
am 6 Nov. 2020
KSSV
am 6 Nov. 2020
What range you have given?
valerio auricchio
am 6 Nov. 2020
KSSV
am 6 Nov. 2020
I am not getting any error....the given code is working fine.
Diese Frage ist geschlossen.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

