MATLAB 2x2 maximum fill
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Fabio Corres
le 11 Mar 2017
Commenté : Fabio Corres
le 11 Mar 2017
Hello guys ,
I have a problem.I have an image file and you also know it is matrix.I want to implement 2x2 maximum fill as an image that i upload. I want to search the all 2x2 pixels , finding the maximum value and fill 2x2 area (that we searched) with the maximum value.Can anyone help me. Thank you
0 commentaires
Réponse acceptée
Stephen23
le 11 Mar 2017
Modifié(e) : Stephen23
le 11 Mar 2017
>> ipt = [128,25,12,26;240,200,15,25;128,128,255,15;35,35,35,155]
ipt =
128 25 12 26
240 200 15 25
128 128 255 15
35 35 35 155
>> blk = [2,2];
>> fun = @(s)max(s.data(:))*ones(blk);
>> otp = blockproc(ipt,blk,fun)
otp =
240 240 26 26
240 240 26 26
128 128 255 255
128 128 255 255
>> blk = [2,2];
>> spl = size(ipt)./blk;
>> col = repmat(blk(1),1,spl(1));
>> row = repmat(blk(2),1,spl(2));
>> C = mat2cell(ipt,col,row);
>> foo = @(m)max(m(:))*ones(blk);
>> otp = cell2mat(cellfun(foo,C,'Uni',0))
otp =
240 240 26 26
240 240 26 26
128 128 255 255
128 128 255 255
>> blk = [2,2];
>> idx = size(ipt)./blk;
>> idx = reshape(1:prod(idx),idx);
>> idx = kron(idx,ones(blk)); % (repelem also works)
>> vec = accumarray(idx(:),ipt(:),[],@max);
>> otp = vec(idx)
otp =
240 240 26 26
240 240 26 26
128 128 255 255
128 128 255 255
>> idx = size(ipt)./blk;
>> tmp = reshape(ipt,blk(1),idx(1),blk(2),idx(2));
>> tmp = permute(tmp,[2,4,1,3]);
>> tmp = max(max(tmp,[],4),[],3);
>> otp = kron(tmp,ones(blk))
otp =
240 240 26 26
240 240 26 26
128 128 255 255
128 128 255 255
3 commentaires
Stephen23
le 11 Mar 2017
Modifié(e) : Stephen23
le 11 Mar 2017
This error occurs if the input matrix is not double. It can be fixed by specifying the class of the ones in fun:
>> ipt = uint8([128,25,12,26;240,200,15,25;128,128,255,15;35,35,35,155]);
>> blk = [2,2];
>> fun = @(s)max(s.data(:))*ones(blk,class(s.data));
>> otp = blockproc(ipt,blk,fun)
otp =
240 240 26 26
240 240 26 26
128 128 255 255
128 128 255 255
Plus de réponses (0)
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!