How to Implement an “imshow” function?

17 visualizzazioni (ultimi 30 giorni)
Anna Nazarova
Anna Nazarova il 2 Dic 2018
Commentato: Image Analyst il 9 Dic 2018
How to Implement an “imshow” function by transforming the range [min, max] on the gray scale into the interval determined by 0 ≤ a, b ≤ 1? I need use variables and it should be suitable for any image not particular. Thank you!

Risposta accettata

Anna Nazarova
Anna Nazarova il 2 Dic 2018
The result should be like this. And if I use your code than the image not changingСнимок экрана 2018-12-02 в 2.01.45.png
  4 Commenti
Rik
Rik il 2 Dic 2018
Of course the image is not changing: you have defined a and b is such a way that it will not change. The data type that most images will have when loaded is uint8. This has a minimum of 0 and a maximum of 255. If you want to change how the image looks, there are multiple methods:
  1. the method I showed you, where you will have to define a and b yourself, or use a=min(IM(:));b=max(IM(:));
  2. the method Walter suggested: use mat2gray(IM) (note that mat2gray(IM,[a b]) is equivalent to my method. mat2gray is in the image processing toolbox, but you appear to have that anyway.)
  3. the method Image Analist just suggested: don't change the data, but use the empty square brackets to display you image with a scaled color scheme by using imshow(IM,[])
Which of these you think is best for your situation is for you to decide.
Image Analyst
Image Analyst il 2 Dic 2018
I also suggested #2. And there is yet another way that might be useful. It's imadjust(). With imadjust(), you can specify a percentage of the way to come in on the tails of the histogram to determine the range. that way, outliers (like salt and pepper noise) will not prevent a nice picture from appearing.

Accedi per commentare.

Più risposte (3)

Image Analyst
Image Analyst il 2 Dic 2018
To display a gray scale image without changing the values of the array, but only changing the displayed values, do this:
imshow(grayImage, []);
To change the actual matrix, use mat2gray():
% Scale grayImage to between 0 and 1: min goes to 0, max goes to 1
grayImage = mat2gray(grayImage);
  5 Commenti
Anna Nazarova
Anna Nazarova il 9 Dic 2018
Can you please send full code?
Image Analyst
Image Analyst il 9 Dic 2018
Yes, you can find it here

Accedi per commentare.

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by