how to scramble pixels of specific part of image
조회 수: 4 (최근 30일)
이전 댓글 표시
Can anyone suggest a way to scramble all the pixels within a circle of an image?
I am using this code to scramble all the pixels within an image:
img=imread(SpecificStimuli);
rmig=reshape(img,[],size(img,3));
n=size(rmig,1);
simg=rmig(randperm(n),:);
simg=reshape(simg,size(img));
imwrite(simg, OutputName);
But, rather than scrambling all the pixels I would like to only scramble the pixels within this oval of the original image:
Radius=608; Centered at: Center Row=676 Center Column=642
댓글 수: 0
답변 (1개)
DGM
2024년 7월 2일 17:45
Consider the example:
% an image
inpict = imread('peppers.png');
% generate a mask using any appropriate method
% see also imellipse(), drawellipse()
sz = size(inpict,1:3);
points = makeoval(75,[180 250],-135); % attached
mask = poly2mask(points(:,1),points(:,2),sz(1),sz(2));
mask = repmat(mask,[1 1 sz(3)]); % expand the mask
% get the masked pixels as a Mx3 color table, shuffle it
extractedCT = reshape(inpict(mask),[],sz(3));
extractedCT = extractedCT(randperm(size(extractedCT,1)),:);
% compose the output image
outpict = inpict;
outpict(mask) = extractedCT;
% show it
imshow(outpict)
Might want to be specific when you say "oval'. Someone might guess that you mean "strictly an ellipse", but I don't think many people would think you actually meant "circle".
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!