4 Stimmen

Wie verwende ich graythresh auf ein indiziertes Bild in MATLAB?

I = imread('coins.png');
level = graythresh(I);
BW = im2bw(I,level);
imshow(BW)

Die obige Abbildung ist ein Beispiel aus der MATLAB-Dokumentation, das ein Graustufenbild verwendet. Wie kann ich es mit einem indizierten Bild wie alt text in diese Stelle ?

2voto

gnovice Punkte 124264

Sie können das indizierte Bild und seine Farbkarte zunächst in ein Graustufenbild umwandeln, indem Sie die Funktion IND2GRAU :

[X,map] = imread('SecCode.php.png');  %# Read the indexed image and colormap
grayImage = ind2gray(X,map);          %# Convert to grayscale image

Dann können Sie den oben stehenden Code anwenden:

level = graythresh(grayImage);     %# Compute threshold
bwImage = im2bw(grayImage,level);  %# Create binary image
imshow(bwImage);                   %# Display image

EDIT:

Wenn Sie diesen Ansatz für jede Art von Bild verallgemeinern möchten, können Sie dies auf folgende Weise tun:

%# Read an image file:

[X,map] = imread('an_image_file.some_extension');

%# Check what type of image it is and convert to grayscale:

if ~isempty(map)                %# It's an indexed image if map isn't empty
  grayImage = ind2gray(X,map);  %# Convert the indexed image to grayscale
elseif ndims(X) == 3            %# It's an RGB image if X is 3-D
  grayImage = rgb2gray(X);      %# Convert the RGB image to grayscale
else                            %# It's already a grayscale or binary image
  grayImage = X;
end

%# Convert to a binary image (if necessary):

if islogical(grayImage)         %# grayImage is already a binary image
  bwImage = grayImage;
else
  level = graythresh(grayImage);     %# Compute threshold
  bwImage = im2bw(grayImage,level);  %# Create binary image
end

%# Display image:

imshow(bwImage);

Dies sollte Folgendes umfassen Die meisten Bildtypen, mit Ausnahme von einigen Ausreißern (wie alternative Farbräume für TIFF-Bilder ).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X