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

9 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 );

Kategorien

Mehr zu Image Processing Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by