如何判斷我生成的二進制圖像是0索引還是1索引?Java - 二進制圖像像素索引
我製作了一個程序,它讀入圖像,生成二進制圖像並在圖像上執行一些其他功能。但是,我想知道如何判斷二進制映像中的像素值是哪個「索引」?
這是如何完成的?
是否有一個簡單的內置函數(例如image.getRGB();
,可以調用它來確定這個函數)?
如何判斷我生成的二進制圖像是0索引還是1索引?Java - 二進制圖像像素索引
我製作了一個程序,它讀入圖像,生成二進制圖像並在圖像上執行一些其他功能。但是,我想知道如何判斷二進制映像中的像素值是哪個「索引」?
這是如何完成的?
是否有一個簡單的內置函數(例如image.getRGB();
,可以調用它來確定這個函數)?
我不知道你的意思是0或1索引,但這裏有一些事實。
BufferedImage
是一個通用的形象,所以在像素起始座標爲(0,0)
如果你想要一個陣列上下工夫,從這個圖片的到來,左上角會在索引0(除非另有規定)
image.getRGB(0, 0, image.getWidth(), image.getHeight(), array, 0, image.getWidth());
BufferedImage
不支持1個BPP圖像本身,但無論哪種經由盒裝模式用的ColorModel,或2-索引調色板。如果沒有例子,我無法分辨出你有哪一個。
無論內部格式如何,不同的getRGB()方法應該總是每個像素返回一個值,每個值返回一個像素。請注意,全不透明度值(0xFF000000,-16777216)也將包含在結果中。
例如。
BufferedImage image = new BufferedImage(16, 16, BufferedImage.TYPE_BYTE_BINARY);
image.setRGB(0, 0, 0xFFFFFFFF);
image.setRGB(1, 0, 0xFF000000);
image.setRGB(0, 1, 0xFF000000);
image.setRGB(1, 1, 0xFFFFFFFF);
System.out.println(image.getRGB(0, 0));
System.out.println(image.getRGB(1, 0));
System.out.println(image.getRGB(0, 1));
System.out.println(image.getRGB(1, 1));
int[] array = image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth());
System.out.println(array[0]); // at (0,0)
System.out.println(array[1]); // at (1,0)
System.out.println(array[16]); // at (0,1)
System.out.println(array[17]); // at (1,1)
什麼是'二值圖像'?你使用的是什麼類或數據結構? – 2012-02-28 15:42:07
二進制像純黑色和白色圖像中的像素是黑色或白色。 – MusTheDataGuy 2012-02-28 15:43:29
當你「讀入圖像」時,它是如何存儲的?這應該回答你的問題:「是否有一個簡單的內置函數(如image.getRGB();例如)」。一旦你把它分類出來,手動創建一個小圖像,將其中一個像素設置爲黑色,其餘的設置爲白色,並且可以非常快速地確定如何設置索引,例如通過打印索引和值。 – YXD 2012-02-28 15:48:15