How to run this code?

Illustration
Afeza Ajirah - 2024-02-05T18:26:04+00:00
Question: How to run this code?

Hi, i have problem on running this code due to some error. The only output is the displaying of 'original image'. Hopefully, you guys can help me fix it. Thank you so much.   error: Error in Wprocess (line 18) H1=rgb2gray(I2); %convert it into gray scale image x=.01; t=cputime; I1=imread('lena.jpg');%read image % I1=imread('mand.jpg');%read image H=rgb2gray(I1); %convert it into gray scale image J=imresize(H,[512 512]);%resize image into 512x512 image J= double(J); [M,N]=size(J); figure,imshow(uint8 (J));title('Original image') [Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('haar'); [ca,ch,cv,cd] = dwt2(J,Lo_D,Hi_D); [ca1,ch1,cv1,cd1] = dwt2(ch,Lo_D,Hi_D); [U,S,V] = svd(ch1); [m,n]=size(S); % Copy the original Singular value Sw=S; I2=imread('cameraman.jpg');%read Watermark image H1=rgb2gray(I2); %convert it into gray scale image J1=imresize(H1,[128 128]);%resize image [a,b]=size(ch1); W1= double(J1); W1=imresize(W1,[a b]);% resize the 1 watermark image [p,q]=size(W1); % Watermark insertion S=S+(x*W1); [U_w,S_w,V_w]=svd(S); [cs1]=[U*S_w*V']; wing = idwt2(ca1,cs1,cv1,cd1,Lo_R,Hi_R); wing1 = idwt2(ca,wing,cv,cd,Lo_R,Hi_R); t1=cputime; figure,imshow(uint8(wing1)),title('Watermarked Image')  

Expert Answer

Profile picture of Prashant Kumar Prashant Kumar answered . 2025-11-20

It seems like you're encountering an issue with the function rgb2gray. The error message suggests that there might be something wrong with the input image I2. Here are a few steps to troubleshoot and fix this error:

  1. Check if I2 is Defined: Ensure that the variable I2 is properly defined and holds an RGB image before you call rgb2gray.

  2. Verify the Image Type: Ensure that I2 is indeed an RGB image. The rgb2gray function expects an input image of type uint8, uint16, or double with three color channels.

  3. Display and Inspect I2: Use the imshow function to display the image and inspect its properties.

Here's an example of how you can modify your code:

matlab
% Load or capture the image into variable I2
I2 = imread('your_image_file.jpg'); % or any method to load the image

% Display the original image
figure;
imshow(I2);
title('Original Image');

% Check the properties of the image
disp('Image properties:');
disp(size(I2)); % Display the size of the image
disp(class(I2)); % Display the class type of the image

% Convert the image to grayscale
H1 = rgb2gray(I2);

% Display the grayscale image
figure;
imshow(H1);
title('Grayscale Image');

Steps:

  1. Load or Capture the Image: Ensure you load the image into I2. You can replace 'your_image_file.jpg' with the actual filename or use another method to capture the image.

  2. Display the Original Image: Use imshow to display the original image and verify that it is correctly loaded.

  3. Inspect the Image Properties: Use disp to print the size and class type of the image to verify that it is an RGB image.

  4. Convert to Grayscale: Use rgb2gray to convert the RGB image to grayscale.

  5. Display the Grayscale Image: Display the converted grayscale image using imshow.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!