Ältere Kommentare anzeigen
Hello Sir,
I have one doubt regarding for loop.I have 256x256 image then after some operations performed, it would produce 32x32 size output(that means by analysing 8x8 values it will show a singular value 1) How it could be done?Can i try it with mat2cell? But i need some information about mat2cell in depth Please post your suggetions.
My sample code
im=imread('flower.png') %256x256 image
for x=1:8
for y=1:8
im1(x,y)=im(x,y)*cos(0)+im(x,y)*sin(0);
end
end
My question is how to iterate this loop upto 256 values?
8 Kommentare
Image Analyst
am 1 Okt. 2011
Since cos(0) = 1 and sin(0) = 0, you'll simply get im1 = im with this code. And im1 will be the same size. That is not really "analysing." Tell me what you really want to accomplish. Do you want to subsample, blur, sharpen, what? Is im a color image or a grayscale image?
harjan
am 3 Okt. 2011
Image Analyst
am 3 Okt. 2011
You can use blockproc() or a set of 4 nested for loops (for the slow, manual way of doing it), but what on earth are the sin() and cos() for??? And you still haven't said what you want to do. What EXACTLY does "process" mean? Does it mean average, median, standard deviation, range, max, min, what????? Because your loop simply doesn't do ANYTHING other than assign im to im1.
Walter Roberson
am 3 Okt. 2011
The sin() and cos() probably have the side-effect of changing the data type.
harjan
am 4 Okt. 2011
Walter Roberson
am 4 Okt. 2011
First code a routine that finds the first-order moment of a single 8x8 array. Now wrap it in an anonymous routine that extracts the data array from the information passed by blockproc to routines called by it. Now pass that anonymous routine to blockproc .
Walter Roberson
am 4 Okt. 2011
You appear to already have a solid foundation for the code to find the moments for a single 8x8 block, in your previous question http://www.mathworks.com/matlabcentral/answers/15798-image-processing
harjan
am 7 Okt. 2011
Antworten (2)
Walter Roberson
am 3 Okt. 2011
newim = blkproc(im, [8 8], @(b) sum(double(b(:))) );
2 Kommentare
harjan
am 3 Okt. 2011
Walter Roberson
am 3 Okt. 2011
Read the documentation for "function" to see what @(b) indicates.
Walter Roberson
am 7 Okt. 2011
image=imread('D:\Jana\images\jann.jpg') %256x256 image
s = blkproc(image, [8 8], @moment);
Warning: your code with cos(90) and sin(90) is very very unlikely to work. Your current version is worse that way than when we asked you before why you had the cos() and sin() in the equations, which is a question I do not recall that you ever answered.
2 Kommentare
Image Analyst
am 7 Okt. 2011
And it appears jana does not yet know that there is a cosd() and sind() which should be used when inputting values in degrees instead of radians. (Not that they should even be in there in the first place!)
harjan
am 8 Okt. 2011
Kategorien
Mehr zu Image Arithmetic finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!