sir im doing a simple program to identify pixel value and compare with another image,

1 次查看(过去 30 天)
when i run this code i am getting this error.
"Index exceeds matrix dimensions.
Error in myfu1n (line 10)
subblock = I(r:r+7, c:c+7);"
my complete code
clc;
clear all;
close all;
I = rgb2gray(imread('tablet.jpg'));
original = rgb2gray(imread('tablet1.jpg'));
original = double(original);
for( j = 0 : 1:7)
r = randi(225-7);
c = randi(225-7);
subblock = I(r:r+7, c:c+7);
imshow(subblock);
figure;
t = [1 1];
[s fval] = fminunc(@myfun , subblock)
end
y=myfun(I)
separate function
%%myfun(I)
function f = myfun(x)
scale = 0.7;
J = imresize(x, scale);
theta = 30;
x0 = imrotate(J,theta);
for( i = 1:1:225)
f = (x^2 - x0(i)^2);
end

采纳的回答

Geoff Hayes
Geoff Hayes 2017-4-8
编辑:Geoff Hayes 2017-4-8
vani - are you sure that your image is 225x225? Rather than hardcoding the dimensions, use size to determine the number of rows and columns
numRows = size(I,1);
numCols = size(I,2);
for( j = 0 : 1:7)
r = randi(numRows - 7)
c = randi(numCols - 7);
subblock = I(r:r+7, c:c+7, 1);
% etc.
end
The 1 in subblock may not be necessary as presumably I is two dimensional (due to the conversion from RGB to grayscale).

更多回答(1 个)

vani shree
vani shree 2017-4-12
thank you sir.. its working properly im getting values. but still it is showing error in function part. Error using ^ MPOWER is not fully supported for integer classes. Both inputs must be scalar. To compute elementwise POWER, use POWER (.^) instead.
Error in myfun (line 7) f = (x^2 - x0(i) ^2);
Error in myfu1n (line 14) f = myfun(I)
can you please help me again sir
code %%myfun(I) function f = myfun(x) scale = 0.7; J = imresize(x, scale); theta = 30; x0 = imrotate(J,theta); for( i = 1:1:225) f = (x^2 - x0(i)^2); end

类别

Help CenterFile Exchange 中查找有关 Image Processing Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by