How can I decrease intensity levels?

2 vues (au cours des 30 derniers jours)
Tugce Irem
Tugce Irem le 21 Sep 2022
Commenté : Image Analyst le 24 Sep 2022
Hello,
I have RGB images and I got measurements for mean, max, min intensities. I want to decrease 20intensities from each shape in the image without limiting the highest value? For example if the shape has 85pixel at maximum, I want to make it 65, but the other shape has 110 , it should be 90. The blobs are in the same image, I split RGB, and working on only blue and green. Is that possible?
I attached function and one of my merged image, also my single command
Tugce2AnalyzeImage(originalImage, 20, 255)
Thank you
Tugce

Réponses (2)

Image Analyst
Image Analyst le 21 Sep 2022
Modifié(e) : Image Analyst le 21 Sep 2022
Not sure what "limiting" means to you when talking about uint8 images. The values are limited by 0 so if the value is 15, subtracting 20 will give you 0, not -5. If you still want -5 then you need to cast the values to double. Otherwise you can simply do
[r, g, b] = imsplit(rgbImage);
b = b - 20;
g = g - 20;
rgbImage = cat(3, r, g, b);
  1 commentaire
Image Analyst
Image Analyst le 24 Sep 2022
@Tugce Irem I'm still unsure after your comments to Walter what you mean by maximum and limiting. His code and my code both subtract 20, though his calls imclearborder and seems to call regionprops on the green gray scale image rather than a binary image. Anyway since you said that you know one image is just 20 gray levels higher than it should be due to some microscope glitch, why can't you just subtract 20 from the whole image (like Walter showed you at one point) or just only from the green and blue channels like you asked for and I showed you? What are we missing here?

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 21 Sep 2022
newImg = imresize(Img, size(Img, 1:2)-20);
  6 commentaires
Tugce Irem
Tugce Irem le 23 Sep 2022
Thank you both, I tried to fixed the question, I attached the code. I was trying not to bother too much with my all codes, I was trying to ask specific question. Unfortunately Mr. Walter Roberson, I didn't understand how I can use this
YourMatrix(ind) = YourMatrix(ind) - 20;
Thanks again
Walter Roberson
Walter Roberson le 23 Sep 2022
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/1134565/originalImage.jpg';
rgb = imread(filename);
imshow(rgb);
title('original')
r = rgb(:,:,1);
g = rgb(:,:,2);
b = rgb(:,:,3);
gborderless = imclearborder(g);
g_of_rgb = zeros(size(rgb), 'like', rgb);
g_of_rgb(:,:,2) = gborderless;
imshow(g_of_rgb);
title('green channel')
blobprops = regionprops(g, 'PixelIdxList');
all_used_idx = vertcat(blobprops.PixelIdxList);
r_filtered = r; r_filtered(all_used_idx) = r_filtered(all_used_idx) - 20;
g_filtered = g; g_filtered(all_used_idx) = g_filtered(all_used_idx) - 20;
b_filtered = b; b_filtered(all_used_idx) = b_filtered(all_used_idx) - 20;
rgb_filtered = cat(3, r_filtered, g_filtered, b_filtered);
imshow(rgb_filtered);
title('after intensity adjustment')

Connectez-vous pour commenter.

Catégories

En savoir plus sur Images dans Help Center et File Exchange

Produits


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by