매트랩 oil effect 실습중에
교재에 있는것과 똑같이 썼는데요
아래 빨갛게 표시된 부분에 자꾸 오류가 뜨는데
왜 오류가 나는지 모르겠어요 ㅠㅠ
??? Attempted to access hist(0); index must be a positive integer or logical. 라고 뜨는데
문제가 뭐죵 ㅠㅠ 어떻게 바꿔야 되는건가요...??
% 영상 파일 경로명 지정.
filename = 'lena.jpg';
% RGB영상을 가져온다.
color_image = imread( filename );
% RGB to gray, 산술연산을 하기 위해 unit8에서 double로 바꾼다.
gray_image = double( rgb2gray( color_image ) );
% 영상의 크기를 가져온다.
[height, width] = size( gray_image);
%결과 영상에 대해 메모리 할당한다.
oil_effect_image = zeros( height, width );
%변수 설정
heightLength = 5; widthLength = 5;
halfHeightLength = floor(heightLength/2);
halfWidthLength = floor(widthLength/2);
for i=1:height
for j=1:width
%1차원의 256개 방을 만든다.
hist = zeros(1, 256);
var = gray_image(i,j);
n=1; hist(var+1)=1;
for p = -halfHeightLength:heightLength-halfHeightLength-1
for q= -halfWidthLength:widthLength-halfWidthLength-1
tmpHeight = mod((i + p + height), height) + 1;
tmpWidth = mod((j + q + width), width) + 1;
tmpVar = gray_image(tmpHeight, tmpWidth);
if( p ~= 0 || q ~= 0 )
hist(tmpVar+1) = hist(tmpVar+1) + 1;
end
if( hist(tmpVar) > 0 )
n = hist(tmpVar);
finalVar = tmpVar; % 최종값
end
end
end
% 최종값을 삽입한다.
oil_effect_image(i,j) = finalVar;
end
end
% 파일로 저장한다.
imwrite( oil_effect_image, './lena_oil_effect.jpg');
% 원 영상과 결과 영상을 영상에 보이기 위해 8bit로 데이터형 변환한다.
gray_image = unit8( gray_image );
oil_effect_image = unit8( oil_effect_image );
%결과 영상을 보인다.
figure(1);
subplot(1,2,1); imshow( gray_image ); title( 'originalimage' );
subplot(1,2,2); imshow( oil_effect_image ); title( 'oil effect' );