How I can generate an image and modify it with Matlab?

90 views (last 30 days)
Hello,
Is it possible to generate an image with defined row and column numbers without going through the generation of a 2D matrix.
Usually, I created the image according to the following code :
A=3000*ones(200,200);
imwrite(A,['image' num2str(1) '.jp2']);
I want generate an image with 200 rows and 200 columns without generate the matrix A.
My second question, how can I modify an element (the value of a pixel) of an image?
Thank you!

Accepted Answer

Kanika Gupta
Kanika Gupta on 24 Jun 2020
Edited: Kanika Gupta on 24 Jun 2020
Try using this to create a blank image of desired size
blankimage=zeros(200,200)
imshow(blankimage)
To change value at specific location simply do
blankimage(1,1)=255
  2 Comments
K. Taieb
K. Taieb on 24 Jun 2020
Thank you!
It is the same problem, when I generate an image with a large matrix, the matrix size exceeds the capacity of my computer. Like in this example:
blankimage=zeros(50000,50000);
imshow(blankimage)
Kanika Gupta
Kanika Gupta on 24 Jun 2020
The maximum size of array supported by Matlab is 10,000. This can be seen
home > preferences > workspace > maximum array size.
If you wish to use it for larger arrays, refer to https://www.mathworks.com/help/matlab/matlab_prog/resolving-out-of-memory-errors.html

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 24 Jun 2020
Use the uint16 option in ones to cut down the size by a factor of 4. If you use ones() without it, you're using floating point values and have 8 bytes instead of 2 bytes and uint16.
A = 3000 * ones(200, 200, 'uint16');
imwrite(A, 'image1.jp2');

Categories

Find more on Images in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!