0
이미지 당 픽셀 별 로컬 대비를 얻고 싶습니다. Weber contrast은 그럴듯한 공식입니다. 문제는 matlab에서 Ib를 얻는 방법이다. Ib에 인접 픽셀 (예 : 5x5) 만 사용한다고 가정 할 때?matlab/octave에서 이미지의 Weber 대비를 구현하는 방법은 무엇입니까?
이미지 당 픽셀 별 로컬 대비를 얻고 싶습니다. Weber contrast은 그럴듯한 공식입니다. 문제는 matlab에서 Ib를 얻는 방법이다. Ib에 인접 픽셀 (예 : 5x5) 만 사용한다고 가정 할 때?matlab/octave에서 이미지의 Weber 대비를 구현하는 방법은 무엇입니까?
로컬 대비를 계산하려면 휘도 이미지와 로컬 배경 휘도가 필요합니다.
이미 휘도 이미지가 있다고 가정하면 특정 픽셀의 로컬 배경 휘도는 로컬 영역의 모든 픽셀에 대한 평균을 취하여 계산할 수 있습니다.
우리는 수평 및 수직 방향으로 0 : (n-1) 픽셀만큼 이미지를 반복적으로 이동시킴으로써 이러한 로컬 배경 영역 세트 (원본 이미지에서 픽셀 당 하나)를 수집 할 수 있습니다.
다음 데모 기능은 기본 개념 설명 : 우리는 픽셀 라디안 또는 스테 라디안에서 매개 변수를 변환 할 필요가 진정한 정신 물리학 적 실험
function weberContrastDemo
imgWidthPixels = 1024;
imgHeightPixels = 1024;
localBackgroundSizePixels = 5; % square patch
luminance = randn(imgHeightPixels, imgWidthPixels);
luminance(496:528, 496:528) = 20;
background = localMeanFilter(luminance, localBackgroundSizePixels);
weberContrast = (luminance - background);% ./ background;
imagesc(weberContrast);
title('Weber Contrast');
colormap(gray);
end
function filteredImg = localMeanFilter(img, regionSizePixels)
offsetImages = getOffsetImages(img, regionSizePixels);
filteredImg = mean(offsetImages, 3);
end
function buffer = getOffsetImages(img, regionSizePixels)
% GETOFFSETIMAGES
imgSize = size(img);
imgHeight = imgSize(1);
imgWidth = imgSize(2);
minDelta = 0;
maxDelta = (regionSizePixels-1);
bufferWidth = imgWidth + maxDelta;
bufferHeight = imgHeight + maxDelta;
bufferDepth = regionSizePixels .^ 2;
bufferSize = [ bufferHeight bufferWidth bufferDepth ];
buffer = zeros(bufferSize);
iSample = 0;
for deltaX = minDelta:maxDelta
iStartX = 1 + deltaX;
iEndX = imgWidth + deltaX;
idxX = iStartX:iEndX;
for deltaY = minDelta:maxDelta
iSample = iSample + 1;
iStartY = 1 + deltaY;
iEndY = imgHeight + deltaY;
idxY = iStartY:iEndY;
buffer(idxY, idxX, iSample) = img;
end
end
iMin = ceil(regionSizePixels/2);
iMax = iMin + (imgWidth-1);
buffer = buffer(iMin:iMax, iMin:iMax, :);
end % GETOFFSETIMAGES
을, 그래서 디스플레이 또는 이미지 캡처 장치를 보정해야 휘도 측정 값이 정확합니다.