我在matlab中有一個圖像。我試圖讓每一個第二個像素變成灰色。有人會知道如何做到這一點?如何使matlab中的圖像中的每個第二像素灰色
回答
創建checkboard模式的最簡單方法可能是創建一個矩形網格(ndgrid
),然後使用mod
查找所有列和行索引總和爲偶數的元素。
sz = size(rgbImage);
[row, col] = ndgrid(1:sz(1), 1:sz(2));
checkers = logical(mod(row + col, 2));
另一種方法來創建這個相同的邏輯checkers
矩陣是使用bsxfun
,這將大大減少由先前的操作佔用的內存。
checkers = bsxfun(@(x,y)mod(x + y, 2), 1:size(rgbImage, 1), (1:size(rgbImage, 2)).').';
現在我們只需要使用索引此邏輯矩陣爲rgbImage
並設置相關的值,以灰色(128)。一個簡單的方法是平滑rgbImage
的第一維,以便我們可以直接用邏輯矩陣checkers
來索引它們。
reshaped_image = reshape(rgbImage, [], 3); % Flatten first two dims
reshaped_image(checkers, :) = 128; % Set all channels to 128
newImage = reshape(reshaped_image, size(rgbImage)); % Shape it back into original
更新
如果你想這個棋盤圖案應用到僅白色部分原來的rgbImage
的,你絕對可以做到這一點。爲此,您需要創建一個邏輯矩陣,指示白色像素的位置。然後,您想查找棋盤圖案的位置AND(&
),其中像素爲白色。
isWhite = all(rgbImage == 255, 3); % White pixels where all channels = 255
tochecker = checkers & isWhite; % Combine with checkerboard
然後以相同的方式應用此模式。
reshaped_image = reshape(rgbImage, [], 3); % Flatten first two dims
reshaped_image(tochecker, :) = 128; % Set all channels to 128
newImage = reshape(reshaped_image, size(rgbImage)); % Shape it back into original
如果我們在您的文章將此到圖像,我們得到以下
1)讀出的圖像:
rgbImage = imread('photo.jpg');
2)轉換爲一個單元陣列,其中每個元素代表一個像素雖然1x1x3 UINT8 RGB三元:
cellArray = mat2cell(rgbImage, ones(size(rgbImage,1),1), ones(size(rgbImage,2),1), size(rgbImage,3));
3)用灰色替換每個第二個單元格。請注意,我們需要保留原始類型和尺寸,否則以下cell2mat
調用將失敗:
cellArray(1:2:end) = {reshape(uint8([255,255,255]*0.1), [1,1,3])};
4)轉換回矩陣,顯示:
imageGray = cell2mat(cellArray);
imshow(imageGray);
編輯棋盤
如果要將圖像着色爲棋盤格,則不管圖像尺寸如何,步驟3可以替換爲:
linInd = 1:numel(cellArray);
[i,j] = ind2sub(size(cellArray), linInd);
toColor = mod(i+j,2) == 0;
cellArray(linInd(toColor)) = {reshape(uint8([255,255,255]*0.1), [1,1,3])};
基本上我們只着色那些細胞是i + j是偶數。
剛剛添加了一個可以給棋盤的修改。第一塊代碼爲每個第二個像素着色,因此取決於您的高度是偶數還是奇數。新的代碼總是產生棋盤外觀 –
嗨涅-mus,如果像素是白色的,只有像素灰色纔有可能?我有一個黑白圖像,我只想在白色部分有方格區域。我已經在我的原帖中發佈了一張示例圖片。 – user6029533
@ user6029533我已經更新了此答案之上的答案,以包含初始像素應爲白色的情況。 – Suever
- 1. 如何獲取圖像中像素的顏色(加載灰色)?
- 2. 如何用MATLAB計算二值圖像中的白色像素數量?
- 3. 如何獲得java中的圖像的每個像素的灰度級
- 4. 在Matlab中將二進制圖像轉換爲灰度圖像
- 5. 繪製或選擇二進制圖像中的第n個像素MATLAB
- 6. 如何在MATLAB中將彩色圖像轉換爲灰度圖像?
- 7. 基於第一個圖上的像素座標數據的第二個matlab圖
- 8. iPhone:如何獲取圖像的每個像素的顏色?
- 9. 刪除圖像中的背景灰色像素
- 10. 量化matlab中的灰度圖像
- 11. 獲取灰度或黑白圖像的每個像素的像素值?
- 12. Matlab:如何找到彩色圖像中黑色像素的數量?
- 13. 從圖像中的每個像素獲取色相
- 14. 更改.gif圖像中每個像素的顏色數量?
- 15. OpenCV:如何填充每個像素的每個RGB顏色值的RGB圖像?
- 16. 如何訪問每一個圖像像素,MATLAB
- 17. 灰度(每像素8位)在Java圖像像素處理
- 18. Matlab圖像 - 如何計算白色像素的數量
- 19. 如何獲取灰度圖像中的像素值
- 20. 使用matlab查找圖像中每個像素的出現次數
- 21. 如何從灰度圖像中獲取像素的灰度值xCode
- 22. 疊加圖像MATLAB(帶顏色的灰色)
- 23. 灰色UIImage - 灰色IP圖像轉換
- 24. imshow灰色圖像和二進制圖像python
- 25. 如何從彩色圖像動畫到灰色圖像?
- 26. 如何計算opencv中每個blob中的白色像素?
- 27. Python:灰度圖像:使一切變白,除了黑色像素
- 28. 如何在MATLAB中乘以二進制圖像和RGB圖像?
- 29. 如何使用matlab在圖像中查找起始像素
- 30. 在MATLAB中給出像素位置的像素顏色更改
就像一個棋盤或僅在一個特定的尺寸? – Suever
@Suever在棋盤上會有幫助,可能嗎? – user6029533