필터 지우기
필터 지우기

How can I apply a non-built in function to an image for quantification?

조회 수: 4 (최근 30일)
oumi k
oumi k 2022년 3월 23일
댓글: oumi k 2022년 3월 24일
THIS ERROR APPEARS : Assignment has more non-singleton rhs dimensions than non-singleton subscripts Error in TP2_script (line 13) I(i,j)=quant;

답변 (2개)

Walter Roberson
Walter Roberson 2022년 3월 23일
quant= [I(i,j)*(fmax-fmin)/q]/N-1;
  댓글 수: 2
oumi k
oumi k 2022년 3월 23일
Thank you for your answer. Apparently I now have a new error with this line in the function
Error using Quant_gray --> if I(i,j)~= fmax; %I(i,j) not equal to fmax
Not enough input arguments.
Can you please advise?
oumi k
oumi k 2022년 3월 23일
The image is all entirely black even with this modification.

댓글을 달려면 로그인하십시오.


Image Analyst
Image Analyst 2022년 3월 23일
Try this. You might want to reexamine your formula though.
% I=imread('irm2.jpg');
grayImage=imread('cameraman.tif');
[rows, columns, numberOfColorChannels] = size(grayImage);
subplot(1, 2, 1);
imshow(grayImage);
title('Input Image')
impixelinfo
axis('on', 'image')
if numberOfColorChannels == 3
errordlg('Error: program only works for gray scale images, not color images');
return
end
N=16 %niveau de quantification change to 4,8,16...128
fmin=min(min(grayImage)) % for 2D matrix of data (vector utilisation)
fmax=max(max(grayImage))
q=(fmax-fmin)/N % pas de quantification
% Convert to floating point
grayImage = double(grayImage);
for row = 1 : rows
for col = 1 : columns
quant = Quant_gray(grayImage, N, q, fmax, fmin, row, col);
grayImage(row, col) = quant;
end
end
% Show resulting output image.
subplot(1, 2, 2);
imshow(grayImage, []);
title('Output Image')
impixelinfo
%===================================================================================================================
function [quant] = Quant_gray(I, N, q, fmax, fmin, row, col)
if I(row, col) ~= fmax %I(i,j) not equal to fmax
quant= [I(row, col) * (fmax-fmin)/q] / N - 1;
quant= floor(quant);
else
quant = N-1; % I(i,j)=fmax
end
end
  댓글 수: 3
Image Analyst
Image Analyst 2022년 3월 24일
I suspect this
quant= [I(row, col) * (fmax-fmin)/q] / N - 1;
quant= floor(quant);
is always giving 0. Not sure what you're doing but you might try discretize().
oumi k
oumi k 2022년 3월 24일
Yes the problem is here. Thank you for your advice I will work on it.

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by