How to delete every second pixel of each row from a photo?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ferdows Dolon
am 13 Sep. 2014
Kommentiert: Image Analyst
am 13 Sep. 2014
Hi everyone,
I need to write a program which will take a photo as a input and then I want to delete every second pixel of each row from a photo.
How can i do this? Thank you very much.
regards
ferdows
0 Kommentare
Akzeptierte Antwort
Image Analyst
am 13 Sep. 2014
Try this for a gray scale image:
grayImage= grayImage(:, 1:2:end);
Or, if it's an RGB image:
rgbImage = rgbImage(:, 1:2:end, :);
You can assign it to a different image if you don't want to change your input image.
grayImage2 = grayImage(:, 1:2:end);
rgbImage2 = rgbImage(:, 1:2:end, :);
You can also start at column 2 if you want but using 2:2:end instead of 1:2:end.
1 Kommentar
Image Analyst
am 13 Sep. 2014
It's really easy to just do in a single line like I suggested above, but if really you need it as a function....
function outputImage = SubSampleImage(inputImage)
[rows, columns, numberOfColorChannels] = size(inputImage);
if numberOfColorChannels == 1
outputImage = inputImage(:, 1:2:end);
else
outputImage = inputImage(:, 1:2:end, :);
end
though when you call this function you'll still have a single line of code like you'd have if you used my first suggestion and didn't use a function, because you need to call the function. My function is robust enough to handle both gray scale and multispectral/RGB images.
Weitere Antworten (2)
Rushikesh Tade
am 13 Sep. 2014
Bearbeitet: Rushikesh Tade
am 13 Sep. 2014
Try following code:
function output_image=alternate_rows(input_image)
output_image=[];
for i=1:size(input_image,1)
output_image=[output_image input_image(i,1:2:size(input_image,2))]
end
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!