How do I fix a "Subscripted assignment dimension mismatch."
古いコメントを表示
clc
c=1;
t=1;
% To read in the watermarked image
[watermarked_image cmap]=imread('lsb_image.bmp');
watermarked_image=double(watermarked_image);
% To measure the size of the watermarked_image
watermarked_image_size=size(watermarked_image);
x=watermarked_image_size(1);
y=watermarked_image_size(2);
z=watermarked_image_size(1);
% To convert the watermarked image from a MxN matrix into a row
for a=1:watermarked_image_size(1,1)
watermarked_image_row(1,c:z)=watermarked_image(a,1:y);
c=c+y;
z=z+y;
end
When I run it I get the following error:
??? Subscripted assignment dimension mismatch.
Error in ==> single_decode at 15
watermarked_image_row(1,c:z)=watermarked_image(a,1:y);
Can anybody help me remove this error? I am using a test image of size 256*256 and lsb_image.bmp of 12*9.
回答 (3 件)
Jan
2011 年 2 月 2 日
There is no need to use a complicated FOR loop to get a matrix as row vector:
[watermarked, cmap] = imread('lsb_image.bmp');
watermarked = double(watermarked);
watermarked_row = reshape(transpose(watermarked), 1, numel(watermarked));
EDITED: And together with Sean de's addition: If you image is a [Width x Height x 3] 3D array, convert it to a grey scale at first:
watermarked = rgb2gray(watermarked);
Or operate on a single color channel only, e.g. red:
watermarked = rgb2gray(:, :, 1);
amitesh kumar
2011 年 2 月 2 日
0 投票
1 件のコメント
Doug Hull
2011 年 2 月 2 日
please add this as a comment to the original question or an answer. It should not be an answer by itself. You can delete it after moving it.
Sean de Wolski
2011 年 2 月 2 日
probably have to do:
watermarked_image = rgb2gray(watermarked_image);
then Jan's reshape call
3 件のコメント
amitesh kumar
2011 年 2 月 6 日
Walter Roberson
2011 年 2 月 6 日
After the imread() statement, put in
disp(ndims(watermarked))
and tell us what it reports.
Why are you reading the same image twice? Once into watermarked_image and once into watermarked ?
Jan
2011 年 2 月 6 日
There are 2 kinds of gray scale images: 1. just the colors are gray, but they are saved as RGB values, 2. the JPEG has a gray scale "color" table and used index colors. As Walter suggested, you can distinguish them by inspecting the reply of IMREAD.
カテゴリ
ヘルプ センター および File Exchange で Matrix Operations and Transformations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!