我需要提取由(2n + 1)x(2m + 1)描述的像素區域,集中在左圖像(xl,yl)上。 n和m是用戶輸入參數,xl和yl已經定義。到目前爲止,我有這樣的代碼:從圖像中提取一個矩形像素區域
for(int xl = n; xl < picOneGreyScale.getWidth() - n; xl++) {
for(int yl = m; yl < picOneGreyScale.getHeight() - m; yl++) {
//extract (2n+1) x (2m+1) pixel region centred on leftimage (xl,yl);
for(int nArea = xl-n; nArea < xl+n+1; nArea++) {
for(int mArea = yl-m; mArea < yl+m+1; mArea++) {
*code here*
}
}
我不確定如何繼續。我已經定義了一個名爲leftRegion的BufferedImage:
我打算用它來「解壓」我的像素區域之中。到目前爲止,我的想法是,因爲它說代碼代碼在當前位置提取像素(使用getRGB?),然後嵌套另一個循環以將此像素放置在正確的leftRegion的x,y座標內。我不知道如何做到這一點,或者如果我想太複雜。或者有可能使用的getRGB具有擴展參數:
getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize)
,而不是兩個內部for循環,但我又不是關於如何實現這個這麼熱。最後還有一個叫做copyData的BufferedImage方法,它看起來可能相關,但我不確定如何使用它。實施這個的最佳方式是什麼?非常感謝一如既往。
附加信息:
好了,所以我試圖用BufferedImage類的getSubImage方法:
leftRegion = picOneGreyScale.getSubimage(xl, yl, (2*n+1), (2*m+1));
只有我得到一個錯誤「(Y +高度)之外的光柵」。 getSubImage如何工作?圖像是否以xl,yl爲中心,寬度和高度是同等延伸的,還是以不同的方式工作?我是否遵循正確的道路?
我也在研究一個名爲CropImageFilter的類,我不知道這是否會做我所需要的。如果有人能指出我如何做到這一點的正確方向,你就會擁有我所有的愛。和培根。 *免責聲明:培根可能不提供 – cherryduck