흰색/검은 색 이미지가 있습니다. 이 이미지의 흰색 픽셀에 가우스 필터를 적용하고 싶습니다. 그러나 다른 픽셀에 다른 Gaussian 대역폭 매개 변수를 지정하려면 픽셀 단위로 적용하고 싶습니다.matlab에서 이미지의 단일 픽셀에 가우스 필터를 적용하는 방법은 무엇입니까?
예를 들어 이미지의 2 픽셀 만 흰색이고 다른 것은 검정색입니다. 이 두 픽셀에 다른 가우스 필터를 적용하고 싶습니다. X [2]와 Y [2]가 2 픽셀의 좌표라고 가정 해 봅시다.
Gaussian bandwidth for X[0] and Y[0] is [10, 10], standard deviation is 1.
Gaussian bandwidth for X[1] and Y[1] is [20, 20], standard deviation is 3.
roifilt2는 ROI에서 작동하지만 롤백은 단일 픽셀이 아닌 이미지 영역에만 적용되는 것으로 알고 있습니다. 투자 수익 (ROI) 처리를 확인한 후에 필자의 이해로 코딩했으나 아래 코드는 오류가 발생합니다.
Error using imwrite (line 422)
Image data can not be empty.
Error in guassianFilter (line 73)
imwrite(out,[outdir,imname,'.png'],'png');
필터링 된 출력 이미지가 비어있는 것 같습니다. 하지만 저는 matlab에 익숙하지 않습니다. 왜 이런 일이 일어나고 어떻게 수정해야하는지 모르겠습니다. :(
내가 직접 일을 호출 할 수있는 MATLAB 함수 있나요 는코드 :
는while ischar(tline)
line = regexp(tline,' ','split');
if(strcmp(line{1},'touch') == 1)
c = floor(str2double(line{1,3})); % same as X[0] as I mentioned above
r = floor(str2double(line{1,4})); % same as Y[0] as I mentioned above
BW = roipoly(im,c,r);
G = fspecial('gaussian',[10 10],1);
out = roifilt2(G,im,BW);
end
if(strcmp(line{1},'dT') == 1)
c = floor(str2double(line{1,3})); % same as X[1] as I mentioned above
r = floor(str2double(line{1,4})); % same as X[1] as I mentioned above
BW = roipoly(im,c,r);
G = fspecial('gaussian',[20 20], 3);
out = roifilt2(G,im,BW);
end
tline = fgets(fid);
end
fclose(fid);
imname=strtok(imList(cnt).name,'.');
imwrite(out,[outdir,imname,'.png'],'png');
대단히 감사합니다. 이해하기에 너무 명확한 시간과 노력에 감사드립니다. – Jasmine