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

조회 수: 9 (최근 30일)
Ferdows Dolon
Ferdows Dolon 2014년 9월 13일
댓글: Image Analyst 2014년 9월 13일
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

채택된 답변

Image Analyst
Image Analyst 2014년 9월 13일
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
Image Analyst
Image Analyst 2014년 9월 13일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Rushikesh Tade
Rushikesh Tade 2014년 9월 13일
편집: Rushikesh Tade 2014년 9월 13일
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 2014년 9월 13일
nCols = size( photo, 2 );
photo = photo( :, 1:2:nCols );

카테고리

Help CenterFile Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by