How to Implement an “imshow” function?

조회 수: 17 (최근 30일)
Anna Nazarova
Anna Nazarova 2018년 12월 2일
댓글: Image Analyst 2018년 12월 9일
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!

채택된 답변

Anna Nazarova
Anna Nazarova 2018년 12월 2일
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
Rik
Rik 2018년 12월 2일
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 2018년 12월 2일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

Image Analyst
Image Analyst 2018년 12월 2일
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
Anna Nazarova
Anna Nazarova 2018년 12월 9일
Can you please send full code?
Image Analyst
Image Analyst 2018년 12월 9일
Yes, you can find it here

댓글을 달려면 로그인하십시오.

태그

Community Treasure Hunt

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

Start Hunting!

Translated by