1

これにはMATLABの方法が必要だとほぼ確信していますが、あまり経験がありません。

width=length(hsvSecond(:,1,1));
height=length(hsvSecond(1,:,1));
for i=1:width
    for j=1:height
        if(hsvSecond(i,j,2)>0.35)
            hsvSecond(i,j,1)=0;
            hsvSecond(i,j,2)=0;
            hsvSecond(i,j,3)=0;
        end    
    end
end

基本的には、hsvSecond(i,j,2)値が数値よりも大きい場合は、hsvSecond(i,j,:)ゼロにします。

4

1 に答える 1

3

簡単なワンライナーを次に示します。

hsvSecond(repmat(hsvSecond(:,:,2) > 0.35, [1,1,3])) = 0;

または、これはおそらくより効率的な代替手段です(ただし、いくつかの初歩的なテストでは、私を驚かせる別の方法が示唆されています):

hsvSecond = bsxfun(@times, hsvSecond(:,:,2) <= 0.35, hsvSecond)

ただし、コードに関するいくつかのコメント:

width=length(hsvSecond(:,1,1));
height=length(hsvSecond(1,:,1));

する必要があります

width = size(hsvSecond,1)
height = size(hsvSecond,2)

hsvSecond(i,j,1)=0;
hsvSecond(i,j,2)=0;
hsvSecond(i,j,3)=0;

されている可能性が

hsvSecond(i,j,:)=0;
于 2013-09-26T12:46:06.523 に答える