Filter löschen
Filter löschen

How to delete every second pixel of each row from a photo?

5 Ansichten (letzte 30 Tage)
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

Akzeptierte Antwort

Image Analyst
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
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Rushikesh Tade
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

Adam
Adam am 13 Sep. 2014
nCols = size( photo, 2 );
photo = photo( :, 1:2:nCols );

Community Treasure Hunt

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

Start Hunting!

Translated by